gpt4 book ai didi

ios - 将新对象添加到检索到的 NSMutableArray - 返回 NSInternalInconsistencyException

转载 作者:可可西里 更新时间:2023-11-01 04:35:02 24 4
gpt4 key购买 nike

当我尝试将对象添加到检索到的 NSMutableArray 时,我不断收到此错误。

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

检索:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arrayOfTitles = [userDefaults objectForKey:@"mainArraySaveData"];
NSMutableArray *arrayOfSubjects = [userDefaults objectForKey:@"subjectArraySaveData"];
NSMutableArray *arrayOfDates = [userDefaults objectForKey:@"dateArraySaveData"];

_mutableArray=arrayOfTitles;
_subjectArray=arrayOfSubjects;
_dateArray=arrayOfDates;

[_tableView reloadData];

保存:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
_mutableArray = [[NSMutableArray alloc] initWithArray:[userDefaults objectForKey:@"mainArraySaveData"]];
[userDefaults setObject:_mutableArray forKey:@"mainArraySaveData"];
[userDefaults synchronize];

_dateArray = [[NSMutableArray alloc] initWithArray: [userDefaults objectForKey:@"dateArraySaveData"]];
[userDefaults setObject:_dateArray forKey:@"dateArraySaveData"];
[userDefaults synchronize];

_subjectArray = [[NSMutableArray alloc] initWithArray: [userDefaults objectForKey:@"subjectArraySaveData"]];
[userDefaults setObject:_subjectArray forKey:@"subjectArraySaveData"];
[userDefaults synchronize];

我很困惑,因为我认为这是为了返回 NSMutableArray 而设计的,但它说不是 - NSArray。我的问题是什么??谢谢,SebOH

最佳答案

I'm confused as I thought this was designed to return an NSMutableArray, but it says not - NSArray. What's my issue?

NSUserDefaults 的文档在 objectForKey: 方法的“特殊注意事项”部分专门讨论了这个问题:

Special Considerations

The returned object is immutable, even if the value you originally set was mutable.

解决这个问题很容易——使用mutableCopy:initWithArray:arrayWithArray: 方法制作可变副本:

_mutableArray=[arrayOfTitles mutableCopy];                      // You can do this...
_subjectArray=[NSMutableArray arrayWithArray:arrayOfSubjects]; // ...or this
_dateArray=[[NSMutableArray alloc] initWithArray:arrayOfDates]; // ...or this.

关于ios - 将新对象添加到检索到的 NSMutableArray - 返回 NSInternalInconsistencyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22113558/

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