2012-02-29 115 views
-1

想要幫助解決這個問題,我對不會添加到數組的對象有幫助。不向NSMutableArray添加對象

- (IBAction)done:(id)sender{ 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    NSArray *katArr = [defaults objectForKey:@"kategorier"]; 
    NSMutableArray *kategorier = [katArr mutableCopy]; 

    [kategorier addObject:[katfield text]]; 
    NSLog(@"la till kat: %d", [kategorier count]); 
    [defaults setObject:kategorier forKey:@"kategorier"]; 

    NSArray *bArr = [defaults objectForKey:@"bild"]; 
    NSMutableArray *bilds = [bArr mutableCopy]; 

    [bilds addObject:valdFarg]; 
    NSLog(@"la till pic: %d", [bilds count]); 
    [defaults setObject:bilds forKey:@"bild"]; 
    [defaults synchronize]; 

    [self dismissModalViewControllerAnimated:YES]; 
} 

正在添加第一個對象「[katfield text]」,並且NSLog輸出向上計數。 問題是,我第二次與對象「valdFarg」做它,它不工作。 我曾嘗試爲數組分配內存,但這不是問題,我想至少。

謝謝。

+1

計數是什麼? 0?你確定'bArr'不是零? – 2012-02-29 09:14:00

+0

用戶默認的對象是否可能損壞?我想這可能會發生。 – 2012-02-29 09:16:42

+0

@ xlc0212計數爲0,且bArr不爲零。 – 2012-02-29 09:18:41

回答

-3

可能你用錯了鑰匙,所以它的返回你NIL:

NSArray *bArr = [defaults objectForKey:@"bild"]; 

這難道不是bilds而不是圖片報?

NSArray *bArr = [defaults objectForKey:@"bilds"]; 
+1

我不知道誰是-1 ...但這不是愚蠢的...因爲變量是他的代碼中的圖片...有時會發生... – Ganzolo 2012-02-29 09:35:01

+0

這個答案應該在評論中,而不是作爲答案。這是一個你問的問題 - 你沒有說明問題的答案是什麼。 – 2012-02-29 09:49:00

+0

好的,對不起,我是新的。我只是試圖幫助。我採取了答案,因爲我想發佈一些在回答模式中更好的代碼。我只是覺得在這個問題上付出如此多的負擔並不意味着,因爲我正在努力提供幫助。我沒有說完全錯誤的東西......這可能是問題... – Ganzolo 2012-02-29 09:56:21

0

如果NSMutableArray * bilds是nil [bilds addObject:valdFarg];不會使bild成爲具有一個對象的可變數組;

而不是

NSArray *bArr = [defaults objectForKey:@"bild"]; 
NSMutableArray *bilds = [bArr mutableCopy]; 

NSMutableArray *bilds = [NSMutableArray arrayWithArray:[defaults objectForKey:@"bild"]]; 

,以確保它是永遠不會零,你總是有一個可變的數組,你可以添加到。

+0

雖然確實'arrayWithArray:'似乎允許一個零參數這個事實是沒有記錄。這種方法不會引發異常(參見'stringWithString:')也有點不典型。 – 2012-02-29 09:39:20

+0

stringWithString:是一個異常,這就是爲什麼它的異常可能被記錄下來,其他一切如dictionaryWithDictionary:dataWithData:etc取零。 – valexa 2012-02-29 12:32:23

+0

'stringWithString:'被記錄爲引發異常。 'arrayWithArray:'**沒有記錄**以使用零參數。它甚至可能會在未來的操作系統版本中升級。依賴方法的無證行爲至少是不好的風格。 – 2012-02-29 12:37:42