core-data - 核心数据 : Extend Predicate to fetch related entities with special Attribute-Value

标签 core-data swift nspredicate

我有 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 []

作为我请求的结果,我想要获得 A1A2(两者都是可见的)。 但是作为一个包含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/

相关文章:

ios - 核心数据 - 除非插入新对象,否则 Segue 不起作用

swift - Mac OS 更改绑定(bind)核心数据控件的值

ios - 将 swift 闭包存储为 objective-c 类的属性,其中使用 typedef 声明 block

objective-c - NSPredicate 查找标题键以元音开头的所有对象

ios - NSPredicate 对关系属性的计数

ios - 在与父实体有关系的子 NSManagedObjectContext 中创建实体

swift - 将评分添加到值并计算 Firebase 中的平均值

ios - 即使添加了 View ,UIViewContorller 的触摸事件仍然会收到

swift - 模拟器和设备之间的不同 NSPredicate 行为

ios - ALAssets 的 NSPredicate 和 NSArray