在Objective-C中,代码看起来很喜欢这个,
NSInteger random = arc4random_uniform(99) + 1
NSData *data = [NSData dataWithBytes:& random length: sizeof(random)];
但是当我尝试在Swift中这样做时,
let random:NSInteger = NSInteger(arc4random_uniform(99) + 1) //(1-100)
let data = NSData(bytes: &random, length: 3)
它让我错误地认为“NSInteger在$ T1内无法转换为@lvalue
非常感谢任何帮助!
答案 0 :(得分:6)
当您以这种方式将变量指针作为参数发送时,该变量需要是可变的(即,使用var
声明),因为接收函数或方法将能够直接修改变量。你想要的代码是:
var random = NSInteger(arc4random_uniform(99) + 1) //(1-100)
let data = NSData(bytes: &random, length: 3)
您可以在Using Swift with Cocoa and Objective-C: Interacting with C APIs中了解有关使用UnsafePointer<Void>
的更多信息。