如何返回转换为NSInteger的NSNumber

时间:2014-09-25 17:27:32

标签: ios objective-c

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

2 个答案:

答案 0 :(得分:3)

您需要将数字作为NSNumber返回,而不是NSInteger。因此,在返回之前将NSInteger转换为NSNumber。

return @(doubler);

答案 1 :(得分:1)

将您的退货类型更改为

- (NSInteger)

如果您打算继续使用它,或者明确地使用它。