不允许使用 arc 将'NSInteger'(又名"无符号 int")隐式转换为 'NSNumber *'



我写了这段代码:

    for (int i = 1; i < 1000; i++) {
        for (int j = 1; j < 1000; j++) {
            int k = i * j;
            //This is the line were the error messages appears
            NSString *number = [NSString stringWithFormat:@"%d", k];
            NSNumber *length = number.length;
            NSNumber *half = (length / 2);

我希望它做的是,取int k,将其转换为名为number的NSString,将字符串number的长度存储在NSNumber length中,并将该值的一半存储在NSNumber half中。

然而,当尝试将int k转换为NSString number时,我得到了错误消息:

"不允许使用arc将‘NSInteger’(也称为‘unsigned int’)隐式转换为‘NSNumber*’"

有人能帮我弄清楚为什么吗?

number.length返回整数而不是NSNumber

更正为:

NSInteger length = number.length;
NSInteger half = (length / 2);

如果你真的想使用NSNumber,可以这样做:(这里我将整数装箱到NSNumber对象)

NSNumber *length = @(number.length); //same as [NSNumber numberWithInt:number.length]
NSNumber *half = @(number.length / 2);

最新更新