【问题标题】:How to add objects into NSMutableArray without deleting the existing ones?如何在不删除现有对象的情况下将对象添加到 NSMutableArray 中?
【发布时间】:2014-03-11 22:42:54
【问题描述】:

我在 NSUserdefaults 中的 nsmutablearray 遇到了问题,每次我重新启动应用程序时,这个数组都会擦除已经存在的对象并放入新的对象,所以我需要帮助来防止这些发生,谢谢,这是我的代码;

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    if (!self.tasks) self.tasks = [NSMutableArray new];

    [self.tasks addObject:textField.text];
    [userDefaults setObject:self.tasks forKey:@"tasks"];
    //[userDefaults synchronize];
    NSLog(@"tasks:%@", [[NSUserDefaults standardUserDefaults]objectForKey:@"tasks"]);
    NSLog(@"number of tasks:%d", self.tasks.count);

我以这种方式在表格视图中阅读它:

cell.taskTitle.text = (self.TasksArray)[indexPath.row];

谢谢!

【问题讨论】:

  • 使用来自NSUserDefaults 的当前值初始化数组,然后添加新值,然后将更新后的列表保存回NSUserDefaults。

标签: ios objective-c nsmutablearray nsuserdefaults


【解决方案1】:

你在这里缺少一行代码:

self.tasks = [[NSMutableArray alloc] initWithArray:[userDefaults objectForKey:@"tasks"];

据我所知,您最初并未设置“.tasks”属性,因此添加该位可能会解决问题。

【讨论】:

  • 如果“[userDefaults objectForKey:@"tasks"]”为 nil,self.tasks 可能为 nil。所以我们正在防止这种情况发生。
  • 好吧@mustafabesnili 你赢了...我看到康拉德的回答in this related question。我已经确定了答案。
【解决方案2】:

您需要首先按照 rmaddy 的建议从用户默认值中获取它。如果之前从未创建/保存过您的 nil 检查,则会创建一个新数组。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

self.tasks = [[userDefaults objectForKey:@"tasks"] mutableCopy];

if (!self.tasks) self.tasks = [NSMutableArray new];

[self.tasks addObject:textField.text];
[userDefaults setObject:self.tasks forKey:@"tasks"];
//[userDefaults synchronize];
NSLog(@"tasks:%@", [[NSUserDefaults standardUserDefaults]objectForKey:@"tasks"]);
NSLog(@"number of tasks:%d", self.tasks.count);

【讨论】:

    【解决方案3】:

    我看到你从不打电话给[[NSUserDefaults standardUserDefaults] synchronize]; 完成对象更改后,您应该调用它,因为它将更改保存到磁盘。

    【讨论】:

    • 你是对的,但你仍然不知道那个“周期性”的时刻是什么时候。调用同步有时可以最终节省你的头发:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2012-01-25
    • 1970-01-01
    相关资源
    最近更新 更多