如何从 NSDictionary 获取整数值?
Posted
技术标签:
【中文标题】如何从 NSDictionary 获取整数值?【英文标题】:How to get an integer value from NSDictionary? 【发布时间】:2013-09-04 12:42:26 【问题描述】:我遇到了这个奇怪的问题。 NSDictionary 没有返回正确的整数值。
来自服务器的 JSON 响应代码。
"status":"ok",
"error_code":0,
"data" : [],
"msg":"everything is working!"
JSON 正在被转换为 NSDictionary。
NSError *error = nil;
NSDictionary *jsonDict = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error: &error];
我使用以下代码访问 NSDictionary 值。
int error_code = (int)[jsonDict valueForKey:@"error_code"]
NSLog(@"%i", error_code);
The log outputs the following: 143005344
我什至尝试过 objectForKey 并得到相同的响应。
谢谢,提前。
【问题讨论】:
【参考方案1】:是的,它输出值的指针,这就是您看到此日志输出的原因。
您不能将指针转换为整数并期望该值。
int error_code = [[jsonDict valueForKey:@"error_code"] integerValue];
或者如果你想使用现代的objective-c
int error_code = [jsonDict[@"error_code"] integerValue];
【讨论】:
你应该使用int
和intValue
,或者NSInteger
和integerValue
——但是你不应该在没有明确演员表的情况下混合它们。
感谢它对我帮助很大。我可以正确地 NSLog 所有键/值对,但尝试存储 Int 值我也收到了一个指针。这个答案对我帮助很大!
这是什么构造?它是在 Objective-C 中转换的另一种方式吗?【参考方案2】:
数字在 plist/json 字典中存储为 NSNumber
实例。尝试调用NSNumber
的getter 之一,例如intValue
:
int error_code = [jsonDict[@"error_code"] intValue];
还要注意字典的新下标语法。
【讨论】:
以上是关于如何从 NSDictionary 获取整数值?的主要内容,如果未能解决你的问题,请参考以下文章