How to return NSNumber converted to NSInteger

When NSNumber is a class, I am trying to convert it to NSInteger to do some computation. In NSLog, this shows that I am converting and multiplying correctly. However, when I had to return the doubler as a normal NSInteger, I get: "The implicit conversion" NSInteger "(" long ") to" NSNumber * "is prohibited by ARC". Where am I going wrong and what should I do to get it right?

- (NSNumber *) numberThatIsTwiceAsBigAsNumber:(NSNumber *)number {

NSInteger doubler = [number integerValue] * 2;
NSLog(@"%ld", (long)doubler);

return doubler;
}

      

EDIT: For the curious, this is how I solved it:

NSInteger unboxing = [number integerValue] * 2;
NSNumber *boxing = [NSNumber numberWithInteger:unboxing];

return boxing;

      

+3


source to share


2 answers


You need to return the number as NSNumber, not NSInteger. So, convert NSInteger to NSNumber before returning.



return @(doubler);

      

+3


source


Change the return type to

- (NSInteger)

      



If you intend to continue to use it as such, or explicitly use it.

+1


source







All Articles