【问题标题】:ios-save nsdictionary in nsuserdefaultios-save nsdictionary in nsuserdefault
【发布时间】:2012-12-16 10:38:06
【问题描述】:

我想保存一个 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>"
       }
      ]
})

【问题讨论】:

  • 你想要什么.. 保存到 NSUserDefaul 或者想创建一个字典
  • 对不起,你能看到我的更新吗

标签: ios nsdictionary


【解决方案1】:

如果你有字典myDict

然后

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

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

关于你的 null 概念。

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

【讨论】:

  • 不可能,我无法在nsuserdefault中保存这样的json
  • 你没有保存 json NSDictionary
  • 我不明白,什么意思?,我从服务返回的字符串json有空值
【解决方案2】:

如果您确实需要在 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];

【讨论】:

  • 我理解你,但是json从服务返回,它可以是nsstring、nsarray、nsdictionary(我需要它是一个字典)
【解决方案3】:

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

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

【讨论】:

  • 不。因为我在说的是你代码的其他地方。先尝试自己做,然后再回来提问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
相关资源
最近更新 更多