【发布时间】:2025-12-15 15:20:32
【问题描述】:
已更新这是我的代码;最后一行代码导致了标题中描述的错误。我了解 userDefaults 将始终返回一个不可变对象;那么我该如何解决呢?我尝试将发送字段设为“可变副本”,但它被标记为错误。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if(textField.tag == kStaffName) { // get index of staffName textField
NSMutableArray *staffNamesArray = [[userDefaults arrayForKey:@"staffNamesArray"] mutableCopy];
NSInteger indexSelected = [oStaffPickerView selectedRowInComponent:0];
[staffNamesArray replaceObjectAtIndex:indexSelected withObject:textField.text];
【问题讨论】:
-
@njzk2 绝对不是重复的:代码已经使用了
mutableCopy,因此匹配the accepted answer。 -
既然屏幕右边框外巧妙地隐藏了一个“if”,你确定你没有修改任何其他仍然不可变的数组吗?
-
it was flagged as an error。请澄清一下? -
你能显示完整的堆栈跟踪吗?是否添加了断点来验证崩溃位置和数组类?
-
@spokane-dude:不做假设,将完整的错误日志添加到您的问题中怎么样?
标签: objective-c nsmutablearray nsuserdefaults ios8.1