我有 2 个实体(1 个到多个),都带有 bool 标志“可见”
获取我使用的 A 的所有可见实体
request.predicate = NSPredicate(format:"visible != false")
这样我得到所有可见的 A 填充所有 B(包括不可见的)
问题:是否可以扩展谓词以获取仅填充了 B 的所有可见实体的所有可见 A? 还是我必须遍历所有实体?
谢谢!
[更新 1] 下面是一些代码:
class A: NSManagedObject {
@NSManaged var visible: NSNumber
@NSManaged var relationShipToB: NSSet
}
class B: NSManagedObject {
@NSManaged var visible: NSNumber
@NSManaged var relationShipToA: NSManagedObject
}
[更新 2] 这就是我的解决方法(在 Swift 中)
class A: NSManagedObject {
@NSManaged var visible: NSNumber
@NSManaged var relationShipToB: NSSet
var visibleB:[B] {
get {
var result = [B]()
for b in relationShipToB.allObjects as [B] {
if(b.visible.boolValue) {
result.append(b)
}
}
return result
}
}
}
[更新 3] 假设我们有以下实例:
A1 {
visible = "true"
toB = [B1, B2]
}
A2 {
visible = "true"
toB = [B3]
}
B1 {
visible = "true"
}
B2 {
visible = "false"
}
B3 {
visible = "false"
}
预期结果:
A1 [B1]
A2 []
作为我请求的结果,我想要获得 A1 和 A2(两者都是可见的)。 但是作为一个包含A1.toB的我只想要B1(B2不可见) A2.toB 将为空,因为 B3 不可见。
最佳答案
request.predicate = NSPredicate(format:"visible = true AND ALL relationShipToB.visible = true")
关于core-data - 核心数据 : Extend Predicate to fetch related entities with special Attribute-Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25218610/