iphone – NSManagedObjects中的Mutable集合?

自动生成的NSManagedObject属性的标准声明声明了许多关系,如下所示:

@property (nonatomic, retain) NSSet *somethings;
...
@dynamic somethings;

将该声明更改为NSMutableSet是否安全? CoreData组件是否仍能正常运行?

从@dynamic判断,probaby不关心我是否使用NSSet子类而不是NSSet,但我不想重写大量代码只是为了发现它不起作用.

根据Apple的Core Data Programming Guide,这应该总是被声明为NSSet.

如果你想要一个可变代理(基本上是核心数据集的可变版本并且工作原理完全相同),那么你可以使用函数mutableSetValueForKey,如下所示:

// myManagedObject is the managed object that has the somethings property.
NSMutableSet *mutableSomethings = [myManagedObject mutableSetValueForKey:@"somethings"];

然后可以将mutableSomethings修改为标准的NSMutableSet,并且将更新某些东西,并且将适当地调用KVO方法.

但请注意,可变集的许多功能(例如addSomethingsObject和removeSomethingsObject)已经在核心数据生成的访问器中提供,因此在许多情况下您不需要使用代理.

翻译自:https://stackoverflow.com/questions/9662131/mutable-sets-in-nsmanagedobjects

转载注明原文:iphone – NSManagedObjects中的Mutable集合?