iphone - 将值附加到 NSMutableArray 并保存到 NSUserDefaults

标签 iphone objective-c ios xcode cocoa-touch

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

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

  • 为了做到这一点,下面是正在发生的事情:
  • 当前的婴儿姓名显示在 UILabel 中.
  • 用户按下“保存”,然后 label.text 值被附加到 NSMutableArray (我认为这在我的代码中不能正常工作)。
  • NSMutableArray然后保存在 NSUserDefaults .
  • 然后将内容加载到另一个 View 中以填充 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]);
    
    }
    

    这是整个文件内容的粘贴箱链接(带注释):http://pastebin.com/hQRM9Azh

    最佳答案

    每次添加时,您都会从一个空数组 ([[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];
    

    关于iphone - 将值附加到 NSMutableArray 并保存到 NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692504/

    相关文章:

    iphone - 使用按钮而不是 ui 导航 Controller 在 View 之间切换

    iphone - NSLog 指针语法

    iphone - "Distribution"和 "Release"构建配置有什么区别?

    ios - Quickblox:体系结构 x86_64 的 undefined symbol :错误

    ios - viewDidLoad 在 iOS 8 和 iOS 7 中的调用方式不同?

    ios - 滚动 UITableView 仅在 iPhone 5C 上导致异常和崩溃

    iphone - 如何在 objective-c 中使用 id 变量?

    ios - fabs() 在模块下不起作用

    IOS Google+ 分享显示空的 prefillText

    ios - 以编程方式创建带有后退按钮的导航 Controller