Ios 操作对象数组时出错

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文件中,如果

我想构建一个可以删除和添加的对象数组

首先,我在.h文件中初始化了数组,如下所示:

@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];
}

@马西米兰看我最近的编辑;我不喜欢您在代码中使用的“空测试”。