我有一个简单的两个实体核心数据数据库实体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 回答
如果
Entity2
总是与一个Entity1
相关,我认为实现这一目标的最简单方法是在核心数据模型中定义Entity1
和Entity2
之间的一对多关系 .选择
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
:在
Entity2
:完成后,您可以轻松访问与
Entity1
相关的所有Entity2
,无需任何查询,如下所示:真正酷的是你也可以走另一条路: