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

Not all keys work when converting JSON String to NSDictionary

我正在使用以下代码将 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 字符串转换为字典的更好方法?

更新:我将 "name" 和 "version" 更改为 "game" 和 "gersion",并且效果很好。

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

我们仍然不确定是什么导致设备进入此状态,因为 运行宁 "Clean Build Folder" 几次,关闭并重新启动 XCode,并重新启动 iPad 对我们没有任何帮助。

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