首页 文章

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

提问于
浏览
0

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

这个关系定义为每个实体1,我可以有许多实体2 .

我选择了一个实体1 - 通过UITableView我现在想要检索所有实体2记录 . 我正在尝试NSPredicate,但这似乎是错误的方式..这是代码 - 它不能调用NSPredicate的初始化:

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

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

1 回答

  • 1

    如果 Entity2 总是与一个 Entity1 相关,我认为实现这一目标的最简单方法是在核心数据模型中定义 Entity1Entity2 之间的一对多关系 .

    • 选择 Entity1 . 在“关系”下,单击按钮以添加关系 . 说出有意义的东西 . 因为你在这个例子中没有't told us the real names of your entities, I'来调用关系 entityTwos .

    • 将关系类型设置为"To Many" .

    • 如果 Entity1 不需要任何 Entity2 ,请将关系设置为Optional .

    • 将删除规则设置为"Cascade",以便在删除 Entity1 时,也会删除任何相关的 Entity2 .

    • 现在,选择 Entity2 . 添加一个关系,给它一个名字(比如 entityOne )并将其反转设置为在步骤1中创建的关系的名称(在本例中为 entityTwos ) .

    • 取消选中Optional选项,并将Type设置为"To One" . 将删除规则设置为"Nullify" .

    您还需要为实体类中的关系添加属性 . 在 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
    

相关问题