首页 文章

'NSInteger'(又名'unsigned int')到'NSNumber *'的隐式转换是不允许的

提问于
浏览
1

我写了这段代码:

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 时,我收到错误消息:

“不允许将'NSInteger'(又名'unsigned int')隐式转换为'NSNumber *'”

有人可以帮我找出原因吗?

1 回答

  • 3

    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);
    

相关问题