【问题标题】:NSFetchRequest predicate syntaxNSFetchRequest 谓词语法
【发布时间】:2010-07-18 20:44:08
【问题描述】:

我的核心数据模型中有一个名为Task 的实体。 Task 实体有一个名为date 的可转换属性。 date 属性的类是一个名为TDate 的类(它符合 NSCoding,因此是可转换的属性)。 TDate 有一个 NSInteger 类型的属性,称为 month

在我的NSFetchRequest 中,我想获取特定月份的所有Task 对象。我正在使用以下谓词:

[NSPredicate predicateWithFormat:@"date.month == 7"]

应该在 7 月份给我所有 Task 对象。但是,使用此谓词,不会返回获取的对象。我可以通过取出谓词来确认有 Task 对象的月份是 7(7 月)。我的谓词语法有问题吗?

谢谢

【问题讨论】:

    标签: iphone cocoa-touch core-data nspredicate nsfetchrequest


    【解决方案1】:

    如果您使用的是 SQLite 后端,则无法搜索可转换属性。在 SQLite 后端,获取请求的谓词被转换为 SQL 并在 SQLite 引擎上执行。由于 SQLite 不了解 Cocoa,因此针对 SQLite 后端执行的谓词不能使用可转换属性。

    如果您使用的是 XML、二进制或内存存储,则可以使用谓词查询可转换的属性,因为整个对象图都在内存中并使用本机 Cocoa 进行查询。

    【讨论】:

    • 我最终为date 对象的每个属性创建了单独的属性。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多