NSData到在Swift中
我无法在Swift中find解决这个问题的方法(所有这些都是Objective-C,它们处理的是我不认为存在于Swift中的指针)。 有没有办法将一个NSData
对象转换成Swift中[Uint8]
forms的字节数组?
您可以避免首先将数组初始化为占位符值,如果以略微复杂的方式通过指针,或者通过Swift 3中引入的新Array
构造函数:
Swift 3
let data = "foo".data(using: .utf8)! // new constructor: let array = [UInt8](data) // …or old style through pointers: let array = data.withUnsafeBytes { [UInt8](UnsafeBufferPointer(start: $0, count: data.count)) }
Swift 2
Array(UnsafeBufferPointer(start: UnsafePointer<UInt8>(data.bytes), count: data.length))
这很有趣,但存在更简单的解决scheme。 在斯威夫特工作3.当然。 我今天用过了。
data: Data // as function parameter let byteArray = [UInt8](data)
就这样! 🙂 NSData很容易桥接到数据。
您可以使用NSData
的getBytes
函数来获取等价的字节数组。
由于您没有提供任何源代码,因此我将使用已转换为NSData的Swiftstring内容。
var string = "Hello World" let data : NSData! = string.dataUsingEncoding(NSUTF8StringEncoding) let count = data.length / sizeof(UInt8) // create an array of Uint8 var array = [UInt8](count: count, repeatedValue: 0) // copy bytes into array data.getBytes(&array, length:count * sizeof(UInt8)) println(array)
Swift 3+解决scheme
数据到[字节]
extension Data { var bytes : [UInt8]{ return [UInt8](self) } }
[字节]到数据
extension Array where Element == UInt8 { var data : Data{ return Data(bytes:(self)) } }