0

我想保存一个 nsdictionary 在 nsuserdefault 中具有 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>"
       }
      ]
})
4

3 回答 3

0

您提到保存字典,但您所显示的只是字典数组的 JSON 表示。

你不需要做任何奇怪的事情,把返回的JSON数据变成一个数组,然后把数组写入一个plist。把它变成一个字符串,然后尝试用它做一个集合可能会给你带来问题。

于 2012-12-16T11:46:51.457 回答
0

If you really need to store null values in NSDictionary use NSNull. Anyway you can just not store key with null value and then for [mydict objectForKey:@"keyWithNullValue"] you'll get nil.

But as I said if you really really want to store null use something like that:

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];
于 2012-12-16T11:06:12.373 回答
0

如果你有字典myDict

然后

[[NSUserDefaults standardUserDefaults] setObject:myDict forKey:@"MyDictionary"];

myDict只有当它包含所有实现的对象时才会被保存NSCoding

关于你的空概念。

无需将nil值保存在字典中key
如果您尝试获取 a 的对象,key并且在字典中没有任何与之相关的对象,key那么它将返回nil。所以不需要保存null

于 2012-12-16T10:48:10.087 回答