将Objective-C中的NSNumber转换为int

问题描述 投票:119回答:5

在将其添加到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"];
objective-c nsnumber
5个回答
189
投票

看看documentation。使用intValue方法:

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

59
投票

[如果可能,请坚持使用NSInteger数据类型。因此,您可以这样创建数字:

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

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

NSInteger value = [number integerValue];

3
投票

使用NSNumber方法intValue

这里是Apple reference documentation


1
投票

不太冗长的方法:

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

0
投票

经过测试的单线:

int number = ((NSNumber*)[dict objectForKey:@"integer"]).intValue;
© www.soinside.com 2019 - 2024. All rights reserved.