Ios 操作对象数组时出错
我想构建一个可以删除和添加的对象数组 首先,我在.h文件中初始化了数组,如下所示:Ios 操作对象数组时出错,ios,objective-c,arrays,object,Ios,Objective C,Arrays,Object,我想构建一个可以删除和添加的对象数组 首先,我在.h文件中初始化了数组,如下所示: @property (strong, readwrite) NSMutableArray *addArray; [[NSUserDefaults standardUserDefaults] setObject:self.addArray forKey:@"likesArray"]; [[NSUserDefaults standardUserDefaults] synchronize]; 然后在.m文件中,如果
@property (strong, readwrite) NSMutableArray *addArray;
[[NSUserDefaults standardUserDefaults] setObject:self.addArray forKey:@"likesArray"];
[[NSUserDefaults standardUserDefaults] synchronize];
然后在.m文件中,如果数组是空的,我将初始化数组,如viewDidLoad
中所示:
self.addArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"likesArray"];
if ([self.addArray count] == 0) {
NSLog(@"array is empty");
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
self.addArray = [[NSMutableArray alloc] initWithArray: [defaults objectForKey:@"likesArray"]];
}
然后,我尝试添加和删除如下所示的对象:
@{@"name":_name,@"genre":_genre,@"info":_info}
通过执行此操作添加对象:
[self.addArray addObject:@{@"name":_name,@"genre":_genre,@"info":_info}];
这样做是为了移除一个物体
[self.addArray removeObject:@{@"name":_name,@"genre":_genre,@"info":_info}];
最后,我像这样存储数组:
@property (strong, readwrite) NSMutableArray *addArray;
[[NSUserDefaults standardUserDefaults] setObject:self.addArray forKey:@"likesArray"];
[[NSUserDefaults standardUserDefaults] synchronize];
但我收到的错误消息如下:
@property (strong, readwrite) NSMutableArray *addArray;
[[NSUserDefaults standardUserDefaults] setObject:self.addArray forKey:@"likesArray"];
[[NSUserDefaults standardUserDefaults] synchronize];
***由于未捕获异常而终止应用程序
“NSInternalInconsistencyException”,原因:'-[\uu\NSCFArray
insertObject:atIndex::发送到不可变对象的变异方法
我做错了什么在此处添加
mutableCopy
:
self.addArray = [[[NSUserDefaults standardUserDefaults] objectForKey:@"likesArray"] mutableCopy];
作为用户默认值,将返回一个NSArray
,而不是NSMutableArray
此外,此代码更好:
if (!self.addArray) {
self.addArray = [NSMutableArray new];
}
@马西米兰看我最近的编辑;我不喜欢您在代码中使用的“空测试”。