Массив с NSDictionary не хочет сохранять в standardUserDefaults - PullRequest
0 голосов
/ 12 октября 2010

У меня ... странная проблема.

Я добавляю NSDictionary в NSArray, а затем сохраняю его по умолчанию.Когда я проверяю количество объектов этого ключа по умолчанию пользователя, он говорит, что счетчик равен 0, но массив, который находится «в памяти», имеет этот объект (поэтому счетчик равен 1).

Код, а такжес выводом, который он выдает:

(массив - это NSArray, значения по умолчанию - [NSUserDefaults standardUserDefaults])

- (void)addSongToQueue:(NSDictionary *)songData {
 [array addObject:songData];
 [defaults setObject:array forKey:@"OfflineArray"];
 [defaults synchronize];

#if DEBUG
 NSLog(@"Dictionary Data Received: %@", songData);
 NSLog(@"Object Count on Array: %u", [array count]);
 NSLog(@"Object Count on Defaults: %u", [[NSArray arrayWithArray:[defaults objectForKey:@"OfflineArray"]] count]);
 [defaults removeObjectForKey:@"OfflineArray"];
 [defaults synchronize];
#endif
}

Вот как я его называю:

[className addSongToQueue:[NSDictionary dictionaryWithObjectsAndKeys:@"yadda", @"yadda", nil]];

Это вывод: (Я запустил его дважды, просто чтобы убедиться: P)

2010-10-11 21:47:35.807 AppName[1119:207] Dictionary Data Received: {
yadda = yadda;
    }

2010-10-11 21:47:35.807 AppName[1119:207] Object Count on Array: 1
2010-10-11 21:47:35.808 AppName[1119:207] Object Count on Defaults: 0
2010-10-11 21:47:36.647 AppName[1119:207] Dictionary Data Received: {
yadda = yadda;
    }

2010-10-11 21:47:36.647 AppName[1119:207] Object Count on Array: 2
2010-10-11 21:47:36.648 AppName[1119:207] Object Count on Defaults: 0

Так что да.Я не могу быть в состоянии решить это.: /

Заранее спасибо.:)

Ответы [ 2 ]

3 голосов
/ 12 октября 2010

Вы уверены, что defaults не ноль?

1 голос
/ 12 октября 2010

Вы действительно просто помещаете NSString экземпляры в словарь?Каждый раз, когда я видел неполное сохранение из NSUserDefaults, это происходило потому, что некоторые объекты в словаре несовместимы с форматом plist.Вы можете хранить только NSNumber, NSString, NSArray, NSDictionary, NSData во всех версиях формата plist (некоторые допускают также NSDate).

...