【发布时间】:2016-02-24 06:47:50
【问题描述】:
我有一个从服务器下载的字符串。它是 JSON 格式并且格式正确。它是一个 JSON 对象数组。我的目标是将其转换为NSArray,然后将其存储在NSUserDefaults 中以供后续使用。我的尝试通常有效,但有时我会因此错误而崩溃:
尝试设置非属性列表对象
这是我正在使用的代码。我认为应该这么简单。我认为不必将对象实际转换为 NSDictionaries 并对其进行迭代,对吗?
NSString *message = [dict objectForKey:@"message"];
NSLog(@"message: %@", message);
data = [message dataUsingEncoding:NSUTF8StringEncoding];
NSArray *arr = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
[[NSUserDefaults standardUserDefaults] setObject:arr forKey:RESOURCES_LIST];
例如,这是导致崩溃的字符串之一(NSLog 命令的输出):
[{"folder":"Documents","files":[{"sort_order":"120","filename":"pdf.pdf","filetype":"pdf","display_name":"说明","upload_date":"2015-08-11","md5":"ea9f839f91941b5ea7f5a316e3ce95ca","bool_external":"0","url":"http://www.somesite.com/pdf.pdf" }]},{"folder":"Images","files":[{"sort_order":"100","filename":"space.jpg","filetype":"image","display_name":"例如","upload_date":"2015-10-14","md5":"bc63b896949cbf87c54678fee8ed833b","bool_external":"0","url":"http://www.somesite.com/space.jpg" },{"sort_order":"110","filename":"profile.png","filetype":"image","display_name":"Profile","upload_date":"2015-10-14"," md5":"740d61911560e1c84869563b83f3bbf8","bool_external":"0","url":"http://www.somesite.com/profile.jpeg"}]},{"文件夹":"信息","文件" :[{"sort_order":"130","filename":"info.pdf","filetype":"pdf","display_name":"info","upload_date":"2015-11-17"," md5":"926a7941cc9c7f58e43c3eb2de661c27","bool_external":"0","url":null}]},{"文件夹":"视频","文件":[{"sort_order":"130","文件名" :“样本_video","filetype":"video","display_name":"教学 视频","upload_date":"2015-08-11","md5":"-1","bool_external":"0","url":"https://www.youtube.com/embed/PuNIwSsz7PI "}]}]
【问题讨论】:
-
顺便说一句 - 您不应该将数据存储在
NSUserDefaults中。解决此问题的原因后,应改为将数组写入 plist 文件。 -
好的。很高兴知道。谢谢!
标签: ios objective-c json nsarray nsuserdefaults