Is it possible to cast an NSInteger to NSNumber?
Solution 1
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];
Solution 2
since Apple LLVM Compiler 4.0
, there is an easier way to create NSNumber
object:
NSNumber *x = @1234;
NSNumber *y = @(anIntegerVariable);
Solution 3
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."
Fitzy
Donate: Bitcoin: 18YFRUwQne2cPivXSGWL7AffoCK2qR71Bi Ethereum: 0xAD66D5F9BC59924152361ce4B58aA8fa63A9a9Ae
Updated on July 09, 2022Comments
-
Fitzy almost 2 years
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.
-
gnasher729 about 10 yearsIt'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.
-