我有这个奇怪的问题。 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并获得相同的响应。
先谢谢。
答案 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];
还请注意字典的新下标语法。