在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
任何帮助将不胜感激!
当您要以这种方式将变量的指针作为参数发送时,变量需要是可变的(即声明为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的交互.
| 归档时间: |
|
| 查看次数: |
4409 次 |
| 最近记录: |