如何从NSDictionary获取整数值?

时间:2013-09-04 12:42:27

标签: ios objective-c json

我有这个奇怪的问题。 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并获得相同的响应。

先谢谢。

2 个答案:

答案 0 :(得分:52)

是的,它会输出值的指针,这就是您看到此日志输出的原因。

您无法将指针强制转换为整数并期望值。

int error_code = [[jsonDict valueForKey:@"error_code"] integerValue];

或者如果你想使用现代objective-c

int error_code = [jsonDict[@"error_code"] integerValue];

答案 1 :(得分:9)

数字在plist / json词典中存储为NSNumber个实例。尝试拨打NSNumber之类的intValue之类的getter:

int error_code = [jsonDict[@"error_code"] intValue];

还请注意字典的新下标语法。