快速获取具有一对多关系的核心数据
Posted
技术标签:
【中文标题】快速获取具有一对多关系的核心数据【英文标题】:fetch coredata with one to many relationship in swift 【发布时间】:2018-04-28 20:21:45 【问题描述】:我有一个显示一行用户的 coredata 实体的 tableview(table1),以及另一个显示与 (table1) 实体以一对多关系连接的实体的 tableview(table2),当 (table2) 出现时点击(table1)选定的行,我的问题是如何在(table1)的选定行中为用户显示(table2)上的数据
示例代码:
let fetchdata:NSFetchRequest<entity2> = entity2.fetchRequest()
do
userList = try myContext.fetch(fetchdata) [of entity1 object]
catch
print(error)
我已经将 (table1) 对象作为 nsobject 转移到 (table2) 。 有什么方法可以以正确的方式完成我的功能
【问题讨论】:
基本上您不需要获取与关系相关的数据。只需从关系属性中获取数据。 @vadian 感谢您的回复,是否有任何代码行可以让我按照您的建议进行操作?或任何教程 【参考方案1】:在 Xcode 的数据模型中,您已经定义了 entity1 和 entity2 之间的一对多关系,该关系的名称也是 entity1 类的一个属性(对于 entity2 上的反向关系也是如此),您可用于访问属于 entity1 实例的所有 entity2。
因此,如果关系被命名为“孩子”,那么它可能看起来像这样
let user = userList[indexPath.row]
let entity2List = user.children //This is a Set
【讨论】:
【参考方案2】:我通过使用NSPredicate
通过使用这行代码将entity2数据与entity1中的那个属性对象连接起来解决了这个问题
let myFetch:NSFetchRequest<entity2> = entity2.fetchRequest()
let myPredicate = NSPredicate(format: "toEntity1-relationship == %@", (myTransferdObject?.name!)!)
myFetch.predicate = myPredicate
do
usersList = try myContext.fetch(myFetch)
catch
print(error)
【讨论】:
以上是关于快速获取具有一对多关系的核心数据的主要内容,如果未能解决你的问题,请参考以下文章