由于NSNumber是一个类,我试图将它转换为NSInteger来进行一些计算 . 在NSLog中,它表明我正在转换并正确地进行乘法运算 . 但是,当我将doubler作为常规NSInteger返回时,我得到“NS”禁止将“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;
2 回答
您需要将数字作为NSNumber返回,而不是NSInteger . 因此,在返回之前将NSInteger转换为NSNumber .
将您的退货类型更改为
如果您打算继续使用它,或者明确地使用它 .