将 NSMutable 数组从一个视图传递到另一个视图
Passing NSMutable array from one view to another
我想在一个视图中向 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];
但这里的问题是,当应用程序启动时,我能够第一次将元素添加到数组中,并且它反映在第二个视图中 too.But 第二次当我按下完成按钮时,我得到一个 NSException 错误说:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
您没有 NSMutableArray
,您有 NSArray
。您从 NSUserDefaults
读取的任何内容都是不可变的。
改变这个:
self.data_array = [defaults objectForKey:@"arr"];
至:
self.data_array = [[defaults objectForKey:@"arr"] mutableCopy];
我想在一个视图中向 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];
但这里的问题是,当应用程序启动时,我能够第一次将元素添加到数组中,并且它反映在第二个视图中 too.But 第二次当我按下完成按钮时,我得到一个 NSException 错误说:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
您没有 NSMutableArray
,您有 NSArray
。您从 NSUserDefaults
读取的任何内容都是不可变的。
改变这个:
self.data_array = [defaults objectForKey:@"arr"];
至:
self.data_array = [[defaults objectForKey:@"arr"] mutableCopy];