Mir*_*iro 4 null json nsuserdefaults ios
我有一个应用程序,我使用基于JSON的API.作为JSON的一部分,通常将值设置为"null".这可能很常见:
{"data":["one","two","three"],"name":null,otherstuff:10}
最近我试图在NSUserDefaults中存储一个从JSON对象转换的misc NSDictionary层次结构.不幸的是,如果存在空数据,则在IOS中将其转换为[NSNull null]会导致异常.显然,无法保存在prefs中.
我想知道是否有人曾经解决过这个问题?我尝试添加一些逻辑来首先从JSON中删除所有空值,但成功有限,但在存储之前必须修改数据似乎是不合适的.有没有更好的方法来处理这个?
dad*_*lar 11
您可以先将NSDictionary转换为NSData,然后安全地存储在NSUserDefaults中(因为NSNull符合NSCoding).
//archive
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dictionary];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"key"];
//unarchive
NSData *newData = [[NSUserDefaults standardUserDefaults] objectForKey:@"key"];
NSDictionary *newDict = [NSKeyedUnarchiver unarchiveObjectWithData:newData];
编辑:正在引用原始数据对象而不是newData对象.
我尝试过一些递归解决方案,但它们往往很复杂并且不能很好地处理混合类型的内容。在最简单的层面上,这里是一个平面示例,如果您对 clean 有可预测的、平面的响应,则该示例效果很好。
NSMutableDictionary *dictMutable = [dict mutableCopy];
[dictMutable removeObjectsForKeys:[dict allKeysForObject:[NSNull null]]];
| 归档时间: | 
 | 
| 查看次数: | 4329 次 | 
| 最近记录: |