将对象添加到NSArray时程序崩溃

时间:2012-02-10 19:26:39

标签: ios exception nsarray nsuserdefaults ios5

我设置了以下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没有问题,在第一次调用之后,它会在添加到{{1如果我试图跨过休息时间,它会说:

favorites

任何人都有类似的问题或者可能知道发生了什么?

1 个答案:

答案 0 :(得分:4)

NSUserDefaults返回一个不可变数组,因此您需要转换它:

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