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很容易桥接到数据。

您可以使用NSDatagetBytes函数来获取等价的字节数组。

由于您没有提供任何源代码,因此我将使用已转换为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)) } }