【发布时间】:2017-02-16 13:57:04
【问题描述】:
我正在将一个 plist 读入我的应用程序,它的顶层是一个数组。确保数组开始是可变的很简单
self.plistData = [[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"myDataSource" ofType:@"plist"]] mutableCopy];
在数组的每个元素中都有另一个数组,每个元素都包含一个字典。
基于表格单元选择,我正在更改所选索引处字典的属性:
[self.cellDescriptors[indexPath.section][indexOfTappedRow] setValue:@"YES" forKey: @"isSelected"];
我在尝试更改字典值时收到错误 '-[__NSCFDictionary removeObjectForKey:]: mutating method sent to immutable object'。如果 plist 读取的 NSDictionary 是不可变的,则该错误是有意义的。
有没有办法从 plist 中读入内容并确保任何数组或字典都作为可变版本读入?
【问题讨论】:
-
提供的代码不完整。你在哪里使用 - removeObjectForKey?
-
你能展示你如何遍历字典/数组的代码吗?
-
“mutableCopy”中没有将每个子级别对象转换为可变版本的构建。
mutableCopy只在调用它的顶层执行它。 -
@SamB 我添加了触发崩溃/错误的代码行
标签: ios objective-c dictionary plist immutability