将值附加到NSMutableArray并保存到NSUserDefaults

Ter*_*ryG 1 iphone xcode cocoa-touch objective-c ios

我正在为iPhone创建一个名称生成器应用程序,这正是我想要做的.

  • 允许用户通过单击保存按钮来保存当前生成的名称.

为了做到这一点,这是正在发生的事情:

  • 当前的babyname显示在UILabel.
  • 用户按下"保存",然后将label.text值附加到a NSMutableArray(我不认为这在我的代码中正常工作).
  • NSMutableArray随后被保存在NSUserDefaults.
  • 然后将内容加载到另一个视图中以填充UITableView单元格.

我的具体问题是,我正确处理这个保存/持久存储过程吗?以下是相关代码段:

- (IBAction)saveName:(id)sender {
// save current baby name to array
NSMutableArray *babyNameArray = [[NSMutableArray alloc] init];

[babyNameArray addObject:babyname.text];

// save list of babynames to nsuserdefaults

[[NSUserDefaults standardUserDefaults] setObject:babyNameArray forKey:@"My Key"];


// for testing log names listed in nsuserdefaults
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);

}
Run Code Online (Sandbox Code Playgroud)

这是一个指向整个文件内容的pastebin的链接(带注释):http://pastebin.com/hQRM9Azh

pau*_*kow 7

每次添加时,您都会重新开始使用空数组([[NSMutableArray alloc] init]) - 而不是从现有项开始.

以下是一些代码,它们会添加到现有条目中:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *babyNameArray = [[defaults stringArrayForKey:@"My Key"] mutableCopy];
if (!babyNameArray) babyNameArray = [[NSMutableArray alloc] init];
[babyNameArray addObject:babyname.text];
[defaults setObject:babyNameArray forKey:@"My Key"];
[defaults synchronize];
Run Code Online (Sandbox Code Playgroud)