swift CoreData 谓词过滤给定父项的所有子数据
swift CoreData predicates to filter all the child data of a given parent
有两个实体 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
来过滤当前 child
视图中与当前 child
属于同一 Parent
的数据。
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
of Child Entity
是我创建的属性,但是 parent
of Child Entity
是由 one to many
与 Parent Entity
的关系。我在 xcdataModelId
文件中看不到 parent
属性,但我可以在代码中使用它。
感谢您的帮助。
这里
NSPredicate(format: "parent = %@", "self.child.parent")
您将 字符串 替换为 %@
占位符。你要的是
NSPredicate(format: "parent = %@", self.child.parent)
搜索所有 parent
等于 self.child
的 parent
的实体。
有两个实体 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
来过滤当前 child
视图中与当前 child
属于同一 Parent
的数据。
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
of Child Entity
是我创建的属性,但是 parent
of Child Entity
是由 one to many
与 Parent Entity
的关系。我在 xcdataModelId
文件中看不到 parent
属性,但我可以在代码中使用它。
感谢您的帮助。
这里
NSPredicate(format: "parent = %@", "self.child.parent")
您将 字符串 替换为 %@
占位符。你要的是
NSPredicate(format: "parent = %@", self.child.parent)
搜索所有 parent
等于 self.child
的 parent
的实体。