【问题标题】:Core Data How to set a value for relationship?Core Data 如何为关系设置值?
【发布时间】:2016-11-19 16:29:48
【问题描述】:

假设,我在父母和孩子之间有一对多的关系。

如何通过代码设置孩子的父母?类似的东西:

[child setValue: ParentManagedObject forKey: ParentRelationship];

在哪里 child - 在与 parent 有关系的 child managedObject 中。
ParentManagedObject - 是父对象,在应用启动时被提取到单例
ParentRelationship - 是 .xcdatamodeld 中的一个键


我知道我可以为父母和孩子创建 NSManagedObjectSubclass 并像这样做

child.ParentRelationship = ParentManagedObject;

但我想知道如何在不创建子类的情况下进行操作。

【问题讨论】:

  • 我认为您不能在核心数据 entity 中使用 attributescustomType。对于关系,您必须创建 NSManagedObject 的子类。

标签: ios core-data relationship


【解决方案1】:

当然您可以使用KVC 来获取或设置NSManagedObject 的属性。

对于一对一或一对多的关系,您可以使用:

[child setValue:parent forKey:parentKey];

对于多对一或多对多使用:

NSMutableSet *relationshipSet = [parent mutableSetValueForKey:childrenKey];
[relationshipSet addObject:child];

其中parentchildNSManagedObject 实例。

【讨论】:

  • [child setValue:parent forKey:parentKey] 不起作用
  • 你是否在parent实体中指定了反向关系?
  • 我做了一个简单的test project。它绝对有效。见[AppDelegate applicationDidBecomeActive:]
猜你喜欢
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多