【发布时间】:2014-08-09 12:32:07
【问题描述】:
我有 2 个实体(1 到多个),都有一个布尔标志“可见”
获取我使用的所有可见实体
request.predicate = NSPredicate(format:"visible != false")
这样我就可以将所有可见的 A 都填充为所有 B(包括不可见的)
问题:是否可以扩展谓词以获取所有可见的 A 仅填充 B 的所有可见实体? 还是我必须遍历所有实体?
谢谢!
[更新 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 我only想要有 B1 (B2 是不可见的) 而 A2.toB 将是 emty,因为 B3 是不可见的。
【问题讨论】:
-
请用 A 类和 B 类代码更新帖子。
-
有可能,您应该使用 ALL 运算符。由于缺少代码,目前很难给您现成的答案。
-
如果解决方法解决了问题,请将其作为答案发布并接受!
标签: core-data swift nspredicate