gpt4 book ai didi

ios - 操作对象数组时出错

转载 作者:行者123 更新时间:2023-11-29 10:36:03 26 4
gpt4 key购买 nike

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

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

@property (strong, readwrite) NSMutableArray *addArray;

然后在 .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}];

最后我像这样存储数组:

[[NSUserDefaults standardUserDefaults] setObject:self.addArray forKey:@"likesArray"];
[[NSUserDefaults standardUserDefaults] synchronize];

但是我收到这样的错误信息:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'

我做错了什么

最佳答案

在此处添加mutableCopy:

self.addArray = [[[NSUserDefaults standardUserDefaults] objectForKey:@"likesArray"] mutableCopy];

因为用户默认会返回一个 NSArray,而不是 NSMutableArray

另外这段代码更好:

if (!self.addArray) {
self.addArray = [NSMutableArray new];
}

关于ios - 操作对象数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27039330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com