Convert NSNumber to int in Objective-C

Viewed 166917

I use [NSNumber numberWithInt:42] or @(42) to convert an int to NSNumber before adding it to an NSDictionary:

int intValue = 42;
NSNumber *numberValue = [NSNumber numberWithInt:intValue];
NSDictionary *dict = @{ @"integer" : numberValue };

When I retrieve the value from the NSDictionary, how can I transform it from NSNumber back to int?

NSNumber *number = dict[@"integer"];
int *intNumber = // ...?

It throws an exception saying casting is required when I do it this way:

int number = (int)dict[@"integer"];
5 Answers

A tested one-liner:

int number = ((NSNumber*)[dict objectForKey:@"integer"]).intValue;
Related