25

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

提前致谢。

4

2 回答 2

56

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

您不能将指针转换为整数并期望该值。

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

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

int error_code = [jsonDict[@"error_code"] integerValue];
于 2013-09-04T12:44:48.153 回答
10

数字作为NSNumber实例存储在 plist/json 字典中。尝试调用其中一个NSNumber吸气剂,例如intValue

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

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

于 2013-09-04T12:45:39.053 回答