Ios 在Swift中将整数转换为NSData

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

在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 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
看起来可疑:)非常可疑