Core Data 如何为关系设置值?
Posted
技术标签:
【中文标题】Core Data 如何为关系设置值?【英文标题】:Core Data How to set a value for relationship? 【发布时间】:2016-11-19 16:29:48 【问题描述】:假设,我在父母和孩子之间有一对多的关系。
如何通过代码设置孩子的父母?类似的东西:
[child setValue: ParentManagedObject forKey: ParentRelationship];
在哪里 child - 在与 parent 有关系的 child managedObject 中。 ParentManagedObject - 是父对象,在应用启动时被提取到单例 ParentRelationship - 是 .xcdatamodeld 中的一个键
我知道我可以为父母和孩子创建 NSManagedObjectSubclass 并像这样做
child.ParentRelationship = ParentManagedObject;
但我想知道如何在不创建子类的情况下进行操作。
【问题讨论】:
我认为您不能在核心数据entity
中使用 attributes
或 customType
。对于关系,您必须创建 NSManagedObject
的子类。
【参考方案1】:
当然您可以使用KVC 来获取或设置NSManagedObject
的属性。
对于一对一或一对多的关系,您可以使用:
[child setValue:parent forKey:parentKey];
对于多对一或多对多使用:
NSMutableSet *relationshipSet = [parent mutableSetValueForKey:childrenKey];
[relationshipSet addObject:child];
其中parent
和child
是NSManagedObject
实例。
【讨论】:
[child setValue:parent forKey:parentKey] 不起作用 你是否在parent
实体中指定了反向关系?
我做了一个简单的test project。它绝对有效。见[AppDelegate applicationDidBecomeActive:]
。以上是关于Core Data 如何为关系设置值?的主要内容,如果未能解决你的问题,请参考以下文章
如何为依赖于关系的自定义 Core Data 属性发布通知?
如何为给定的 Core Data 实体创建和保存一组对象/数组?
如何为一个非常大的 Core Data 数据库创建一个快速搜索机制?