2012-03-11 66 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); 

} 
相关问题