在Swift中将整数转换为NSData

dhi*_*nt4 4 nsdata ios swift

在Objective-C中,代码看起来很喜欢这个,

    NSInteger random = arc4random_uniform(99) + 1 
    NSData *data = [NSData dataWithBytes:& random length: sizeof(random)];
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在Swift中这样做时,

    let random:NSInteger = NSInteger(arc4random_uniform(99) + 1) //(1-100)
    let data = NSData(bytes: &random, length: 3)
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误,坚持"NSInteger不能转换为@lvalue in $ T1

任何帮助将不胜感激!

Nat*_*ook 6

当您要以这种方式将变量的指针作为参数发送时,变量需要是可变的(即声明为var),因为接收函数或方法将能够直接修改变量.你想要的代码是:

var random = NSInteger(arc4random_uniform(99) + 1) //(1-100)
let data = NSData(bytes: &random, length: 3)
Run Code Online (Sandbox Code Playgroud)

你可以阅读更多有关使用UnsafePointer<Void>使用雨燕与可可和Objective-C与C API的交互.

  • `长度:3`看起来很可疑:) (13认同)