根据Swift Core数据中的关系获取与特定实体相关的所有条目



我有一个简单的两个实体核心数据数据库实体1 - 属性1 - 属性2实体2 - 属性1

这种关系是定义的,因此对于每个实体1,我都可以拥有许多实体2。

我已经通过UITATION VIEW选择了一个实体1-我现在想检索所有实体2记录。我正在尝试使用nspredicate尝试,但这似乎是错误的方式。这是该代码 - 无法调用NSPredicate的初始化:

   lazy var entity2Predicate: NSPredicate = { return NSPredicate(format: "%K = %@", #keyPath(Entity1.relationship), ascending: true)}()

为与Entity相关的所有Entity2记录定义获取的正确方法是什么?

如果您的Entity2始终与一个Entity1完全相关,我认为实现此目的的最简单方法涉及在核心数据模型中定义Entity1Entity2之间的一对多关系。

  1. 选择Entity1。在关系下,单击 按钮以添加关系。命名它有意义。由于您还没有告诉我们您的实体的真实姓名,因此我将在此示例中称为entityTwos
  2. 将关系类型设置为"对许多人"。
  3. 如果不需要Entity1具有任何Entity2 s,请与可选的关系设置关系。
  4. 将删除规则设置为"级联",以便在删除Entity1时,也会删除任何相关的Entity2
  5. 现在,选择Entity2。添加一个关系,给它一个名称(例如entityOne(,并将其倒与步骤1中创建的关系的名称(此示例中的entityTwos(。
  6. 取消选中选项,然后将类型设置为"一个"。将删除规则设置为"无效"。

您还需要为实体类中的关系添加属性。在Entity1中:

@NSManaged var entityTwos: NSSet

Entity2中:

@NSManaged var entityOne: Entity1

这样做之后,您可以轻松访问与Entity1相关的所有Entity2,而无需任何查询,例如:

//here, entity1 is an instance of Entity1
entity1.entityTwos

真正很酷的是,您也可以以另一种方式走:

//here, entity2 is an instance of Entity2
entity2.entityOne

最新更新