在swift中获取具有一对多关系的coredata

时间:2018-04-28 20:21:46

标签: swift core-data

我有一个显示一行用户的coredata实体的tableview(table1),以及另一个tableview(table2),它显示了(table1)实体与(table2)实体连接的另一个实体(table2)显示的时间点击(table1)选中的行,我的问题是如何在(table2)中显示(table1)所选行中用户的数据

示例代码:

 let fetchdata:NSFetchRequest<entity2> = entity2.fetchRequest()
    do {
        userList = try myContext.fetch(fetchdata) [of entity1 object]
    }catch{
        print(error)
    }

我已经将(table1)对象作为nsobject传递给(table2)。 有没有办法以正确的方式完成我的功能

2 个答案:

答案 0 :(得分:0)

在Xcode的数据模型中,您已经定义了entity1和entity2之间的一对多关系,该关系的名称也是entity1类的一个属性(对于entity2的反向关系,它是相同的)可以用来访问属于entity1实例的所有entity2。

因此,如果关系被命名为“孩子”,那么它可能看起来像这样

let user = userList[indexPath.row]
let entity2List = user.children //This is a Set

答案 1 :(得分:0)

我通过使用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)
    }