Сбой программы при добавлении объекта в NSArray - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть следующие настройки IBAction:

#define FAVORITES_KEY @"GraphViewController.Favorites"
- (IBAction)addToFavorites:(id)sender {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSMutableArray *favorites = [defaults objectForKey:FAVORITES_KEY];
    if (!favorites) favorites = [NSMutableArray array];
    [favorites addObject:self.program];
    [defaults setObject:favorites forKey:FAVORITES_KEY];
    [defaults synchronize];
}

При первом вызове этого действия все работает хорошо, объект добавляется в мой массив и без проблем сохраняется в NSUserDefaults, после первого вызова он вызывает исключение при добавлении в массив favorites, если я попытаюсь перешагнуть через перерыв, он скажет так:

Single stepping until exit from function objc_exception_throw, 
which has no line number information.

Catchpoint 3 (exception thrown).

Кто-нибудь имел подобную проблему или мог знать, что происходит?

1 Ответ

4 голосов
/ 10 февраля 2012

NSUserDefaults возвращает неизменный массив, поэтому вам необходимо преобразовать его:

NSMutableArray *favorites = [[defaults objectForKey:FAVORITES_KEY] mutableCopy];
if (!favorites) favorites = [NSMutableArray new];
...
[favorites release];
...