2012-02-10 40 views
0

時崩潰,我有以下IBAction設置:程序追加對象的NSArray

#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). 

任何人也有類似的問題,或者可能知道發生了什麼事?

回答

4

NSUserDefaults返回不可變的數組,所以你需要將它轉換:

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

也做到了,小細節一樣,是很好的瞭解。記得iOS總是與不可變的副本一起工作 – 8vius 2012-02-10 19:39:26