Ios 在Swift中将整数转换为NSData
在Objective-C中,代码如下所示Ios 在Swift中将整数转换为NSData,ios,swift,nsdata,Ios,Swift,Nsdata,在Objective-C中,代码如下所示 NSInteger random = arc4random_uniform(99) + 1 NSData *data = [NSData dataWithBytes:& random length: sizeof(random)]; 但当我试着用斯威夫特做这件事时 let random:NSInteger = NSInteger(arc4random_uniform(99) + 1) //(1-100) let
NSInteger random = arc4random_uniform(99) + 1
NSData *data = [NSData dataWithBytes:& random length: sizeof(random)];
但当我试着用斯威夫特做这件事时
let random:NSInteger = NSInteger(arc4random_uniform(99) + 1) //(1-100)
let data = NSData(bytes: &random, length: 3)
这给了我一个错误,即“NSInteger不可转换为@lvalue inout$T1
非常感谢您的帮助!当您打算以这种方式将变量指针作为参数发送时,变量需要是可变的(即,使用
var
声明),因为接收函数或方法将能够直接修改变量。您需要的代码是:
var random = NSInteger(arc4random_uniform(99) + 1) //(1-100)
let data = NSData(bytes: &random, length: 3)
你可以阅读更多关于在中使用
UnsafePointer
的内容。你实际上是在哪一行上使用的?第一行在我看来有点奇怪(尽管我还没有在Swift中做过很多事情)。请尝试Int
而不是NSInteger
谢谢您的回复。当我用Swift声明数据变量时,我发现了错误。Objective-C方法确实很时髦,但它可以工作!顺便说一句sizeof(random)
可以是4或8,但不能是3长度:3
看起来可疑:)非常可疑