Fitzy
Fitzy

Reputation: 1889

Is it possible to cast an NSInteger to NSNumber?

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.

Upvotes: 47

Views: 44095

Answers (3)

Sergey Kalinichenko
Sergey Kalinichenko

Reputation: 726599

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

Upvotes: 116

Brian
Brian

Reputation: 31282

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

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

Upvotes: 19

Kevin
Kevin

Reputation: 838

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

Upvotes: 8

Related Questions