在swift中获取具有一对多关系的coredata
我有一个coredata实体的tableview(table1),它显示了一行用户,另一个tableview(table2)显示了与(table1)实体以一对多关系连接的另一个实体。点击(table1)所选行时,(table2)会显示,我的问题是如何为(table1)中所选行的用户显示(table2)上的数据 示例代码:在swift中获取具有一对多关系的coredata,swift,core-data,Swift,Core Data,我有一个coredata实体的tableview(table1),它显示了一行用户,另一个tableview(table2)显示了与(table1)实体以一对多关系连接的另一个实体。点击(table1)所选行时,(table2)会显示,我的问题是如何为(table1)中所选行的用户显示(table2)上的数据 示例代码: let fetchdata:NSFetchRequest<entity2> = entity2.fetchRequest() do { u
let fetchdata:NSFetchRequest<entity2> = entity2.fetchRequest()
do {
userList = try myContext.fetch(fetchdata) [of entity1 object]
}catch{
print(error)
}
let fetchdata:NSFetchRequest=entity2.fetchRequest()
做{
userList=尝试myContext.fetch(fetchdata)[对entity1对象]
}抓住{
打印(错误)
}
我已经将(表1)对象作为nsobject传输到(表2)。
在Xcode中的数据模型中,有没有任何方法可以正确执行我的函数?您已经定义了entity1和entity2之间的一对多关系,该关系的名称也是entity1类的一个属性(entity2上的反向关系也是如此)可用于访问属于entity1实例的所有entity2 因此,如果关系名为“children”,那么它可能看起来像这样
let user = userList[indexPath.row]
let entity2List = user.children //This is a Set
我通过使用
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)
}
let myFetch:NSFetchRequest=entity2.fetchRequest()
让myPredicate=NSPredicate(格式:“toEntity1关系==%@”,(myTransferdObject?.name!))
myFetch.predicate=myPredicate
做{
usersList=尝试myContext.fetch(myFetch)
}抓住{
打印(错误)
}
基本上,您不需要获取连接到关系的数据。只需从relationship属性获取数据即可。@vadian感谢您的回复,是否有任何代码行可以让我按照您的建议执行?或任何教程