我想在一个视图中将元素添加到NSMutableArray,并且该数组应该反映在另一个视图中。 我使用NSUserDefaults的技术用于这一目的..将NSMutable数组从一个视图传递到另一个视图
这里是我的代码:
查看添加元素
- (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];
但是,这里的问题是当应用程序启动我我能够将元素添加到阵列的第一次,并且在第二视图反映too.But第二次当我按下按钮做我正在一个NSException错误说:
终止应用程序由于未捕获的异常 'NSInternalInconsistencyException',原因是: ' - [__ NSCFArray insertObject:atIndex:]:变异的方法发送到不可变对象'
我不会使用到NSUserDefaults的从视图中查看传递数据。如果视图之间没有任何关系(例如,彼此之间的关系),那么至少要创建一个中间对象来为他们保存数据。 –