我想在nsuserdefault中保存一个nsdictionary值null,不需要替换和删除值null
如何? 我的代码 - >不能保存在nsuserdefault中
NSMutableArray * _itemsNames;
NSString * itemsFilename;
- (void) responseArray:(NSMutableArray *)array {
[_itemsNames setArray:array];
[spinner stopAnimating];
[_itemsNames writeToFile:itemsFilename atomically:YES];
NSMutableSet *filepathsSet = [[NSUserDefaults standardUserDefaults] objectForKey:@"test"];
[filepathsSet setByAddingObject:itemsFilename];
[[NSUserDefaults standardUserDefaults] setObject:filepathsSet forKey:@"test"];
}
json是:(有值null)
({
ID:11,
name:21-12-2012,
des:"<null>",
url:
[
{
ID:1,
name: "<null>"
},
{
ID:2,
name:"<null>"
}
]
},
{
ID:12,
name:if i die young,
des:"<null>",
url:
[
{
ID:3,
name: "<null>"
},
{
ID:21,
name:"<null>"
}
]
})
答案 0 :(得分:0)
如果你有字典myDict
然后
[[NSUserDefaults standardUserDefaults] setObject:myDict forKey:@"MyDictionary"];
仅当 myDict
包含实现NSCoding
关于你的空概念。
无需在字典中为nil
保存key
值
如果您尝试获取key
的对象,并且在字典中没有与该key
相关的任何对象,则它将返回nil
。因此无需保存null
值
答案 1 :(得分:0)
如果您确实需要在NSDictionary中存储空值,请使用NSNull。无论如何,你可以不存储具有空值的键,然后对于[mydict objectForKey:@"keyWithNullValue"]
,你将获得nil
。
但正如我所说,如果你真的想存储null,请使用类似的东西:
NSSet *mySet = [NSSet setWithObjects:@{
@"ID":@(11),
@"name":@"21-12-2012",
@"des":[NSNull null],
@"url": @[@{
@"ID":@(1),
@"name": [NSNull null]
}, @{
@"ID":@(2),
@"name":[NSNull null]
}]
},@{
@"ID":@(12),
@"name":@"if i die young",
@"des":[NSNull null],
@"url": @[@{
@"ID":@(3),
@"name": [NSNull null]
}, @{
@"ID":@(21),
@"name":[NSNull null]
}]}, nil];
答案 2 :(得分:0)
你提到保存字典,但你要显示的只是字典数组的JSON表示。
您不需要做任何奇怪的事情,获取返回的JSON数据并将其转换为数组并将数组写入plist。将它变成一个字符串,然后尝试从中创建一个集合可能会导致问题。