当NSNumber是一个类时,我试图将它转换为NSInteger来进行一些计算。在NSLog中,它表明我正在转换并正确进行乘法运算。但是,当我将doubler作为常规NSInteger返回时,我得到“不允许将'NSInteger'(又名'long')隐式转换为'NSNumber *'与ARC”。我哪里出错了,我该怎么做才能做到这一点?
- (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;
答案 0 :(得分:3)
您需要将数字作为NSNumber返回,而不是NSInteger。因此,在返回之前将NSInteger转换为NSNumber。
return @(doubler);
答案 1 :(得分:1)
将您的退货类型更改为
- (NSInteger)
如果您打算继续使用它,或者明确地使用它。