我将一个NSMutableDictionary存储在plist文件中。 当我将它读入我的对象的属性中时,我需要能够对其进行编辑。 我的属性指针只是NSMutableDictionary, 但是从plist生成的对象是NSDictionary。从plist中读取字典后无法编辑字典
现在我想能够添加更多的键值对或删除少数并再次保存。 我不能,因为它是一个不可变的对象。
该对象在我的模型的init中创建。
我应该怎么办?
我将一个NSMutableDictionary存储在plist文件中。 当我将它读入我的对象的属性中时,我需要能够对其进行编辑。 我的属性指针只是NSMutableDictionary, 但是从plist生成的对象是NSDictionary。从plist中读取字典后无法编辑字典
现在我想能够添加更多的键值对或删除少数并再次保存。 我不能,因为它是一个不可变的对象。
该对象在我的模型的init中创建。
我应该怎么办?
这应该做你需要的东西:
NSDictionary * dict = [NSDictionary dictionaryWithContentsOfFile: <myfilename>];
NSMutableDictionary * mutableDict = [[dict mutableCopy] autorelease];
这是所有你需要做的
NSMutableDictionary *mutableDictionary = [dictionary mutableCopy];
你只需要做出解释的可变副本:
NSDictionary *dictionary;
NSMutableDictionary *mutableDictionary = [dictionary mutableCopy];
任何'NSDictionary'方法都可以在'NSMutableDictionary'上调用,包括便利的构造函数。然后,便利构造函数返回一个'NSMutableDictionary'实例(或类集群中的具体子类)。所以,你可以做'NSMutableDictionary * mutableDict = [NSMutableDictionary dictionaryWithContentsOfFile:];' –
D'oh ...是的,我的坏! –