Question

Quick question- 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.

Was it helpful?

Solution

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];

OTHER TIPS

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

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable);

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."

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top