ios - 将 JSON String 转换为 NSDictionary 时,并非所有键都有效

标签 ios objective-c json nsdictionary nsdata

我使用以下代码将 JSON 字符串文字转换为包含每个项目的 NSDictionary 的数组:

NSString* json = @"[{\"name\":\"Item 1\",\"id\":\"999\",\"lang\":\"en\",\"type\":\"A\",\"version\":15}]";
NSData* data = [json dataUsingEncoding:NSUTF8StringEncoding];
NSArray* values = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

从我的测试设备中删除该应用程序后,该应用程序在 for 循环 values[i][@"name"] 中尝试访问时开始崩溃。在检查器中查看 values 时,我看到以下内容:

values = (NSArray *) @"1 object"
    [0] = (__NSDictionaryM *) 5 key/value pairs
        [0] = (no summary) : @"Item 1"
        [1] = @"id" : @"999"
        [2] = @"type" : @"A"
        [3] = (no summary) : (long)15
        [4] = @"lang" : (no summary)

当进一步扩展时,应该是 nameversion 的键都显示为类型 (__NSCFConstantString *)

这在从设备中删除应用程序之前是有效的,并且没有对代码的这一部分进行任何更改。

关于可能导致此问题的任何想法,或将 json 字符串转换为字典的更好方法?

更新:我将“名称”和“版本”更改为“游戏”和“版本”,并且效果很好。

最佳答案

尝试调试了几个小时后,我和我的主管决定重新启动我正在开发的 MacBook。这解决了运行时问题,我问题中的代码再次按预期工作。

我们仍然不确定是什么导致设备进入此状态,因为多次运行“清理构建文件夹”、关闭并重新启动 XCode 以及重新启动 iPad 对我们没有任何帮助。

我考虑过删除这个问题,但由于我们不知道是什么原因造成的,我想其他人将来可能会遇到这个问题,这个答案可以帮助他们。如果有人可以提供一些关于可能导致这种情况的见解,我很乐意接受你的回答。

关于ios - 将 JSON String 转换为 NSDictionary 时,并非所有键都有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28506887/

相关文章:

javascript - 如何解决nodejs javascript中的 `...`错误

ios - 如何查看手机时间格式是否设置为24小时制?

javascript - 未触发 IOS 页隐藏。无法检测页面卸载

ios - 隐藏行的当前行委托(delegate) UITableView

JavaScript 无法从 PHP json_encode 找到 JSON 数据

java - 将json数据映射到对应的Class

ios - Swift:迭代字典项并将其与数组中的字典项进行比较

Javascript - 在 "No connectivity detected” 时显示消息

objective-c - 观察 NSMutableDictionary 变化

ios - Google Translation API 中的注音字符