在 Objective-C 中将 NSNumber 转换为 int

在将 int 添加到 NSDictionary 之前,我使用 [NSNumber numberWithInt:42]@(42)将 int 转换为 NSNumber:

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

当我从 NSDictionary 检索值时,如何将它从 NSNumber 转换回 int?

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

它抛出一个异常,说当我这样做的时候需要选角:

int number = (int)dict[@"integer"];
167754 次浏览

使用 NSNumber 方法 intValue

这里是 苹果参考文档

看一下 文件。使用 intValue方法:

NSNumber *number = [dict objectForKey:@"integer"];
int intValue = [number intValue];

如果可能的话,你应该坚持使用 NSInteger数据类型,这样你就可以创建这样的数字:

NSInteger myValue = 1;
NSNumber *number = [NSNumber numberWithInteger: myValue];

解码工程与 integerValue方法,然后:

NSInteger value = [number integerValue];

一种不那么冗长的方法是:

int number = [dict[@"integer"] intValue];

一句经过检验的俏皮话:

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