【问题标题】:CoreData Fetch Where All Relationship Property is TrueCoreData 获取所有关系属性为真的地方
【发布时间】:2016-02-10 15:51:06
【问题描述】:

我有两个 NSManagedObjects,如下所述。

extension Day {
    @NSManaged var date: NSDate?
    @NSManaged var isHighPriority: NSNumber?
    @NSManaged var projects: NSSet?
}

extension Project {
    @NSManaged var complete: Bool
    @NSManaged var title: String?
    @NSManaged var day: Day?
}

我想要做的是获取所有Day 对象,其中所有Projects 都已完成。但是,当我尝试此获取请求时,我收到此错误。 Exception was caught during NSPersistentStoreCoordinator -performBlock: Unsupported predicate

这是我的谓词

let predicate = NSPredicate(format: "isHighPriority == %@ AND ALL projects.complete == TRUE", NSNumber(bool: true))

如何正确获取集合中每个 Project 已完成的所有 Days?我可以获取然后 filter,但我宁愿在 CoreData 级别完成所有操作。

【问题讨论】:

  • 我不完全了解 Swift 对 NSPredicate 语法的修改,但不应该是 YES 而不是 TRUE
  • 产生相同的结果。无效。

标签: swift core-data nspredicate nsfetchrequest


【解决方案1】:

我能够通过在NSPredicate 中执行SUBQUERY 来执行此操作

let predicate = NSPredicate(format: "isHighPriority == %@ AND SUBQUERY(projects, $project, $project.complete == TRUE).@count == projects.@count", NSNumber(bool: true))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    相关资源
    最近更新 更多