如何从 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];

【讨论】:

你应该使用intintValue,或者NSIntegerintegerValue——但是你不应该在没有明确演员表的情况下混合它们。 感谢它对我帮助很大。我可以正确地 NSLog 所有键/值对,但尝试存储 Int 值我也收到了一个指针。这个答案对我帮助很大! 这是什么构造?它是在 Objective-C 中转换的另一种方式吗?【参考方案2】:

数字在 plist/json 字典中存储为 NSNumber 实例。尝试调用NSNumber 的getter 之一,例如intValue

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

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

【讨论】:

以上是关于如何从 NSDictionary 获取整数值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Python 中的字符串中获取整数值?

JAVA ODFDOM:如何从 ODF 表中获取整数值

如何从 Rails 中的枚举中获取整数值?

如何从 res/integers.xml 获取整数值?

MySQL 如何从 varchar 列中获取精确的整数值

如何从字节中获取子位作为单独的整数值?