首页 文章

如何返回转换为NSInteger的NSNumber

提问于
浏览
3

由于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 回答

  • 3

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

    return @(doubler);
    
  • 1

    将您的退货类型更改为

    - (NSInteger)
    

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

相关问题