我想在一个视图中向NSMutableArray添加一个元素,该数组应该反映在另一个视图中。 我正在使用NSuserDefaults技术..
这是我的代码:
添加元素的视图
- (IBAction)donebutton:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults new];
if ([defaults objectForKey:@"arr"]) {
self.arrayy = [defaults objectForKey:@"arr"];
}
else {
self.arrayy = [NSMutableArray new];
}
[self.arrayy addObject:self.titlefield.text];
[defaults setObject:self.arrayy forKey:@"arr"];
[defaults synchronize];
}
查看以显示所有这些数组
//in view did load..//
NSUserDefaults *defaults = [NSUserDefaults new];
if ([defaults objectForKey:@"arr"]) {
self.data_array = [defaults objectForKey:@"arr"];
}
else {
self.data_array = [NSMutableArray new];
}
[defaults synchronize];
但是这里的问题是当app启动时我能够第一次将元素添加到数组中,并且它也反映在第二个视图中。但是当我按下完成按钮时,我第二次收到NSException错误说:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:' - [__ NSCFArray insertObject:atIndex:]:发送到不可变对象的变异方法'
答案 0 :(得分:1)
您没有NSMutableArray
,而是NSArray
。您从NSUserDefaults
读取的任何内容都将是不可变的。
改变这个:
self.data_array = [defaults objectForKey:@"arr"];
为:
self.data_array = [[defaults objectForKey:@"arr"] mutableCopy];