2012-03-11 63 views
2

我使用下面的代碼將字符串添加到NSMutableArray。但是我面臨的問題是,只要我給NSMutableArray添加一個新值,以前的值就會被刪除並且新的值會出現,所以總是有一個值。將新的輸入字符串保存到NSMutableArray iPhone

我必須將這個NSMutableArray保存到NSUserDefaults,這樣我才能在其他屏幕上使用它。

我有很多搜索請你幫我

代碼:

- (IBAction)addChildren:(id)sender { 
    inputChildName = nameOfChild.text; 
    childArray = [[NSMutableArray alloc] init]; 
    [self.childArray addObject:inputChildName]; 
    NSUserDefaults *childrenNamesForLabel = [NSUserDefaults standardUserDefaults]; 
    [childrenNamesForLabel setObject:childArray forKey:@"children"]; 
    [childrenNamesForLabel synchronize]; 
    NSLog(@"CHILDREN ARRAY::: %@", childArray); 
} 

回答

4

因爲每當你收到addChildren行動你重新創建childArray這意味着它包含0對象,那麼你加一個對象。

childArray = [[NSMutableArray alloc] init]; 
[self.childArray addObject:inputChildName]; 

childArray = [[NSMutableArray alloc] init];移動到init或load方法,它應該工作。

+0

你更快) – calimarkus 2012-03-11 10:28:21

+0

哎馬庫斯,我做到了,它的工作,但現在的問題是,每當我回來在此屏幕上添加子它再次啓動數組,因爲我已經在viewdidload方法中添加了它的初始化。現在我怎麼能擺脫它 – 2012-03-11 10:35:18

+0

好的thanx我已經解決了它通過保存數組在nsuserdefaults in viewdidload方法 – 2012-03-11 10:55:34

0

inputChildArray和childarray是你的類的成員變量?那麼你應該在init方法中初始化數組或者使用類似的方法。所以只需將該行

// initialise array 
childArray = [[NSMutableArray alloc] init]; 

插入到init方法中。

1

你這樣做每次:

childArray = [[NSMutableArray alloc] init]; 

您創建一個新的NSMutableArray。你必須把這條線放在例如在-viewDidLoad得到這段代碼的工作。

0
childArray = [[NSMutableArray alloc] init]; 

您是每次保存新的字符串時間初始化一個新的數組對象..

這樣,你一個字符串添加到數組..和新數組保存的地方以前..

爲了解決this..add childArray作爲member variable您class.h文件..

,並在您viewDidLoad做到這一點

childArray = [[NSMutableArray alloc] init]; 

然後更改您的代碼如下

-(IBAction)addChildren:(id)sender{ 
inputChildName = nameOfChild.text; 


[self.childArray addObject:inputChildName]; 

NSUserDefaults *childrenNamesForLabel = [NSUserDefaults standardUserDefaults]; 

[childrenNamesForLabel setObject:childArray forKey:@"children"]; 

[childrenNamesForLabel synchronize]; 

NSLog(@"CHILDREN ARRAY::: %@", childArray); 

}