[英]How to return an NSNumber converted to NSInteger
With NSNumber being a class, I am trying to convert it to an NSInteger to do some computations. 由于NSNumber是一个类,我试图将它转换为NSInteger来进行一些计算。 In NSLog, it shows that I am converting and doing the multiplication correct. 在NSLog中,它表明我正在转换并正确进行乘法运算。 However, when I got to return doubler as a regular NSInteger, I get "Implicit conversion of 'NSInteger' (aka 'long') to 'NSNumber* ' is disallowed with ARC". 但是,当我将doubler作为常规NSInteger返回时,我得到“不允许将'NSInteger'(又名'long')隐式转换为'NSNumber *'与ARC”。 Where am I going wrong and what do I do to make this correct? 我哪里出错了,我该怎么做才能做到这一点?
- (NSNumber *) numberThatIsTwiceAsBigAsNumber:(NSNumber *)number {
NSInteger doubler = [number integerValue] * 2;
NSLog(@"%ld", (long)doubler);
return doubler;
}
EDIT: For those curious, this is how I solved it: 编辑:对于那些好奇的人,我就是这样解决的:
NSInteger unboxing = [number integerValue] * 2;
NSNumber *boxing = [NSNumber numberWithInteger:unboxing];
return boxing;
You need to return the number as NSNumber, not NSInteger. 您需要将数字返回为NSNumber,而不是NSInteger。 So, convert the NSInteger to NSNumber before returning. 因此,在返回之前将NSInteger转换为NSNumber。
return @(doubler);
Change your return type to 将您的退货类型更改为
- (NSInteger)
If you intend to continue to use it as such, or explicitly cast it. 如果您打算继续使用它,或者明确地使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.