我在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];
谢谢!
答案 0 :(得分:4)
你在那里缺少一行代码:
self.tasks = [[NSMutableArray alloc] initWithArray:[userDefaults objectForKey:@"tasks"];
据我所知,您最初并未设置“.tasks
”属性,因此添加该位可能会解决问题。
答案 1 :(得分:0)
你需要先从用户默认值中获取它,正如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);
答案 2 :(得分:0)
我发现你从不打电话给[[NSUserDefaults standardUserDefaults] synchronize];
完成对象更改后,您应该调用它,因为它会将更改保存到磁盘。