Is it possible to cast an NSInteger to NSNumber?
Asked Answered
S

3

47

Is it possible to cast a NSInteger to a NSNumber object?

I need to convert the tag of a UIImageView object to a NSNumber object because I need to pass it as an argument to a function.

Shy answered 14/3, 2012 at 7:12 Comment(1)
It's absolutely possible to cast an NSInteger to an NSNumber*. The result will most likely lead to a crash. Of course if you have a number x, you can use @(x) to create an NSNumber object with the value x. Which will work, but is not a cast.Gizzard
B
116

You cannot cast it because NSInteger is not an object, just an alias for a built-in type. You can always create a new NSNumber object from NSInteger, like this:

NSNumber *myNum = @(myNsIntValue);

or in the prior version of the compiler, use

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
Borderline answered 14/3, 2012 at 7:15 Comment(0)
N
19

since Apple LLVM Compiler 4.0, there is an easier way to create NSNumber object:

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable);
Nicki answered 18/10, 2013 at 7:8 Comment(0)
E
8

This is the more correct answer and it will not produce unexpected error.

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];

Because the doc said:

"numberWithInteger: Creates and returns an NSNumber object containing a given value, treating it as an NSInteger."

"numberWithInt: Creates and returns an NSNumber object containing a given value, treating it as a signed int."

Estrus answered 3/2, 2013 at 4:53 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.