2014-09-25 75 views
1

好的,所以我在iOS8推出前上週推出了一個應用程序。在iOS7及以下版本中,一切正常。但是現在,由於人們已經更新到iOS8,我的應用程序無故暫停/崩潰。NSUserDefaults iOS8上的「暫停」/崩潰

我接觸到它是當我設置一個NSMutableArray到NSUserDefaults,它暫停。請注意,NSMutableArray是NSString的數組。

但是(這很奇怪),如果我斷點跳過它的代碼工作,我不會暫停。

這裏是它吹起來的功能...

-(void)UpdateMyAgenda:(NSString*)SessionID Remove:(BOOL)Remove{ 

if(!Remove){ 
    //Do not Remove 

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 


    _MyAgenda = [[NSMutableArray alloc]init]; 
    _MyAgenda = [prefs mutableArrayValueForKey:@"MyAgenda"]; 

    [_MyAgenda addObject:SessionID]; 

    [prefs setObject:_MyAgenda forKey:@"MyAgenda"]; 

    [prefs synchronize]; 

}else{ 
    //Remove 

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

    _MyAgenda = [[NSMutableArray alloc]init]; 
    _MyAgenda = [prefs mutableArrayValueForKey:@"MyAgenda"]; 

    [_MyAgenda removeObject:SessionID]; 

    [prefs setObject:_MyAgenda forKey:@"MyAgenda"]; 

    [prefs synchronize]; 

} 

for (NSString *item in _MyAgenda) { 
    NSLog(@"%@", item); 
} 

NSLog(@"-----------"); 
} 

回答

1

好了,所以這裏的交易,或者現在修復。它看起來像設置一個可變數組在遊戲中偏好正在打破,但設置一個NSArray不是。

因此,將您的數組轉換爲可變數組,然後添加對象,然後將您的可變數組轉換爲nsarray,然後設置用戶默認值。

下面是一個例子....

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    NSArray *arr = [prefs arrayForKey:@"MyAgenda"]; 

    _MyAgenda = [NSMutableArray arrayWithArray:arr]; 
    [_MyAgenda addObject:SessionID]; 

    arr = [NSArray arrayWithArray:_MyAgenda]; 

    [prefs setObject:arr forKey:@"MyAgenda"]; 
    [prefs synchronize]; 
相關問題