Objective-C:将id转换为NSInteger

时间:2011-06-24 23:20:06

标签: objective-c

我有一个带有NSNumber的字典,我想把它转换成NSInteger。最简单/最简单的方法是将类型转换为NSNumber然后调用integerValue?像这样:

// newQuestion is an NSDictionary defined somewhere
NSInteger questionId = [(NSNumber *)[newQuestion objectForKey:@"question_id"] integerValue];

有更好的方法吗?谢谢!

3 个答案:

答案 0 :(得分:74)

如果你想缩短演员阵容,你可以摆脱演员阵容:

// newQuestion is an NSDictionary defined somewhere
NSInteger questionId = [[newQuestion objectForKey:@"question_id"] integerValue];

由于objectForKey:返回id,您可以发送任何已知消息,编译器也不会抱怨。

答案 1 :(得分:4)

是的,你不需要施放。

NSInteger questionId = [[newQuestion objectForKey:@"question_id"] integerValue];

在这种特殊情况下,演员实际上并没有做任何事情。如果词典中的项目不是NSNumber(例如,nil),则questionId将为0。

答案 2 :(得分:3)

不。这是要走的路。但问题是,为什么你需要首先变成一个整数?这可能是可以避免的。或者不是。