我使用以下代码将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)
进一步展开后,应该name
和version
的密钥都显示为(__NSCFConstantString *)
这是在从设备中删除应用之前的工作,并且没有对代码的这一部分进行任何更改。
关于可能导致此问题的任何想法,或者更好的方法将json字符串转换为字典?
更新:我更改了#34;名称"和"版本"到#34;游戏"和" gersion",它运作得很好。
答案 0 :(得分:1)
尝试调试几个小时之后,我的主管和我决定重启我正在开发的MacBook。这解决了运行时问题,我的问题中的代码再次按预期工作。
我们仍然不确定导致设备进入此状态的原因,因为多次运行“Clean Build Folder”,关闭并重新启动XCode,重新启动iPad并没有帮助我们。
我考虑过删除这个问题,但由于我们不知道是什么导致这个问题,我认为其他人可能在将来遇到这个问题,这个答案可以帮助他们。如果有人能够对可能带来这种情况的内容提供一些见解,我将很乐意接受你的回答。