【发布时间】:2020-05-31 05:34:45
【问题描述】:
有两个实体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)
我需要说的是,代码中Child Entity 的text 是我创建的一个属性,但是Child Entity 的parent 是由one to many 与Parent Entity 的关系自动创建的。我在xcdataModelId 文件中看不到parent 属性,但我可以在代码中使用它。
感谢您的帮助。
【问题讨论】:
标签: ios swift core-data nspredicate