在将其添加到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"];
看看documentation。使用intValue
方法:
NSNumber *number = [dict objectForKey:@"integer"];
int intValue = [number intValue];
[如果可能,请坚持使用NSInteger
数据类型。因此,您可以这样创建数字:
NSInteger myValue = 1;
NSNumber *number = [NSNumber numberWithInteger: myValue];
然后使用integerValue
方法进行解码:
NSInteger value = [number integerValue];
使用NSNumber方法intValue
不太冗长的方法:
int number = [dict[@"integer"] intValue];
经过测试的单线:
int number = ((NSNumber*)[dict objectForKey:@"integer"]).intValue;