swift – 如何将字符串数组转换为NSData,NSData转换为字符串数组?

前端之家收集整理的这篇文章主要介绍了swift – 如何将字符串数组转换为NSData,NSData转换为字符串数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将[String]转换为NSData以进行BLE连接.

我知道如何将String转换为NSData / NSData为String.

// String -> NSData
var str: String = "Apple";
let data: NSData = str.dataUsingEncoding(NSUTF8StringEncoding)!

// NSData -> String
var outStr: String = NSString(data:data,encoding:NSUTF8StringEncoding) as! String

但是,我该如何转换,

// [String] -> NSData ???
let strs: [String] = ["Apple","Orange"]

这是转换[UInt8]< - >的样本.的NSData
https://gist.github.com/nolili/2bf1a701df1015ed6488

我想转换[String]< - >的NSData

// [String] -> NSData ??? Is it correct???
var strs: [String] = ["Apple","Orange"]
let data2 = NSData(bytes: &strs,length: strs.count)

// NSData -> [String] ... please teach me..
为了直接回答您的问题,您可以向数组中的每个字符串询问其thisString.dataUsingEncoding(_ :)并将结果附加到NSMutableData实例,直到您完成所有操作.
let stringsData = NSMutableData()
for string in strings {

    if let stringData = string.dataUsingEncoding(NSUTF16StringEncoding) {

        stringsData.appendData(stringData)

    } else {

        NSLog("Uh oh,trouble!")

    }

}

当然,如果你想稍后分离字符串,这对你没有帮助,所以我们真正需要知道的是你打算在什么环境中在连接的另一端使用这些数据?如果另一端也使用Cocoa,请考虑将其打包为PLIST.由于NSString,NSArray和NSData都是属性列表类型,因此您可以直接归档NSAtring NSString实例:

let arrayAsPLISTData = NSKeyedArchiver.archivedDataWithRootObject(strings)

…然后将生成的NSData实例传输到Cocoa感知目标,然后:

if let newStrings: [String] = NSKeyedUnarchiver.unarchiveObjectWithData(arrayAsPLISTData) as? [String] {

    // ... do something

}

猜你在找的Swift相关文章