有两个实体Child
和Parent
。 Parent
和Child
是一对多的关系,Parent
和许多Child
是一个关系。
我所指的代码如下,它可以过滤属性Child
包含text
的yes
级的所有数据:
@State private var predicate: NSPredicate? = NSPredicate(format: "text contains[c] %@", "yes")
@ObservedObject private var db = CoreDataDB<Child>()
for child in self.db.loadDB(predicate: self.predicate):
....
我想做的是让所有Child
级别的数据都属于当前Child
数据的Parent
。
var child: Child
// How to write this line???
@State private var predicate: NSPredicate? = NSPredicate(format: "parent = %@", "self.child.parent")
@ObservedObject private var db = CoreDataDB<Child>()
for child in self.db.loadDB(predicate: self.predicate):
....
我不知道如何在当前predicate
的视图中写入上面的Parent
来过滤与当前child
属于同一child
的数据。
[NSPredicate(format: "parent = %@", "self.child.parent")
在for child in self.db.loadDB(predicate: self.predicate):
时什么也不会得到。
[NSPredicate(format: "child.parent = %@", "self.child.parent")
将出现错误,提示keypath child.parent not found in entity <NSSQLEntity Child id=1> with userInfo of (null)
[我需要说的是,代码中text
的Child Entity
是我创建的属性,但是parent
的Child Entity
是通过与one to many
的Parent Entity
关系自动创建的。我在parent
文件中看不到xcdataModelId
属性,但可以在代码中使用它。
感谢您的帮助。
这里
NSPredicate(format: "parent = %@", "self.child.parent")
您用string代替%@
占位符。您想要的是
NSPredicate(format: "parent = %@", self.child.parent)
搜索parent
等于parent
的self.child
的所有实体。