131

在将 int 添加到 NSDictionary 之前,我使用[NSNumber numberWithInt:42]or@(42)将其转换为 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"];
4

5 回答 5

203

看看文档。使用intValue方法:

NSNumber *number = [dict objectForKey:@"integer"];
int intValue = [number intValue];
于 2010-08-24T11:28:38.023 回答
62

您应该尽可能坚持使用NSInteger数据类型。所以你会创建这样的数字:

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

integerValue然后使用以下方法进行解码:

NSInteger value = [number integerValue];
于 2010-08-24T11:29:52.007 回答
4

使用 NSNumber 方法intValue

这是Apple 参考文档

于 2010-08-24T11:27:22.660 回答
1

一个不太冗长的方法:

int number = [dict[@"integer"] intValue];
于 2015-07-15T08:27:01.247 回答
1

一个经过测试的单线:

int number = ((NSNumber*)[dict objectForKey:@"integer"]).intValue;
于 2019-09-27T15:57:03.700 回答