0

nsuserdefault に値が null の nsdictionary を保存したいのですが、値を 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

辞書があればmyDict

それで

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

myDict実装するすべてのオブジェクトが含まれている場合にのみ保存されますNSCoding

あなたのヌルコンセプトについて。

nilの辞書に値を保存する必要はありませんkey
a のオブジェクトを取得しようとしてkey、辞書にそれに関連するオブジェクトがない場合はkey、 が返されnilます。したがって、null値を保存する必要はありません

于 2012-12-16T10:48:10.087 に答える
0

本当に NSDictionary に null 値を格納する必要がある場合は、NSNullを使用してください。とにかく、キーを null 値で保存することはできませ[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];
于 2012-12-16T11:06:12.373 に答える
0

辞書の保存について言及していますが、表示しているのは辞書の配列の JSON 表現だけです。

奇妙なことをする必要はありません。返された JSON データを取得して配列に変換し、その配列を plist に書き込みます。それを文字列に変換してからコレクションを作成しようとすると、おそらく問題が発生します。

于 2012-12-16T11:46:51.457 に答える