getBytes方法的Swift 3更改

iDe*_*Dev 15 ios swift3 xcode8

我试图在swift 3中运行以下代码

 var values = [UInt8](count:data!.length, repeatedValue:0)
 data!.getBytes(&values, length:data!.length)
Run Code Online (Sandbox Code Playgroud)

其中数据是'数据'数据类型(NSData根据swift 3指南更改为'数据')

我无法在Swift 3中运行上面的代码.编译器给出了"Argument Repeated value必须在参数之前"的错误.同样的代码行在Swift 2.2中运行

解决方案是什么?

sVd*_*sVd 35

对于Swift3,只需使用以下内容:

let array = [UInt8](yourDataObject)
Run Code Online (Sandbox Code Playgroud)

这就是全部,伙计们!)


aya*_*aio 19

这意味着在Swift 3中反转了参数顺序.

对于NSData:

var values = [UInt8](repeating:0, count:data!.length)
data.getBytes(&values, length: data!.length)
Run Code Online (Sandbox Code Playgroud)

对于数据:

var values = [UInt8](repeating:0, count:data!.count)
data.copyBytes(to: &values, count: data!.count)
Run Code Online (Sandbox Code Playgroud)

  • 这是针对早期版本的Swift 3的。对于当前的Swift 3和Swift 4,您应该使用@svd的答案。 (2认同)