由于NSNumber是一个类,我正在尝试将它转换为一个NSInteger来进行一些计算。在NSLog中,它表明我正在正确地转换和执行乘法。然而,当我作为一个常规的NSInteger返回倍频器时,我得到了“NSInteger的隐式转换(又名'long')到'NSNumber*‘是不允许的。”我哪里出错了,我该怎么做才能纠正这个错误呢?
- (NSNumber *) numberThatIsTwiceAsBigAsNumber:(NSNumber *)number {
NSInteger doubler = [number integerValue] * 2;
NSLog(@"%ld", (long)doubler);
return doubler;
}编辑:对于那些好奇的人,我就是这样解决这个问题的:
NSInteger unboxing = [number integerValue] * 2;
NSNumber *boxing = [NSNumber numberWithInteger:unboxing];
return boxing;发布于 2014-09-25 17:32:14
您需要将数字返回为NSNumber,而不是NSInteger。因此,在返回之前,将NSInteger转换为NSNumber。
return @(doubler);发布于 2014-09-25 17:31:55
将返回类型更改为
- (NSInteger)如果您打算继续这样使用它,或者显式地转换它。
https://stackoverflow.com/questions/26044602
复制相似问题