我写了这段代码:
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);