NSFetchRequest 谓词语法
Posted
技术标签:
【中文标题】NSFetchRequest 谓词语法【英文标题】:NSFetchRequest predicate syntax 【发布时间】: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 月)。我的谓词语法有问题吗?
谢谢
【问题讨论】:
【参考方案1】:如果您使用的是 SQLite 后端,则无法搜索可转换属性。在 SQLite 后端,获取请求的谓词被转换为 SQL 并在 SQLite 引擎上执行。由于 SQLite 不了解 Cocoa,因此针对 SQLite 后端执行的谓词不能使用可转换属性。
如果您使用的是 XML、二进制或内存存储,则可以使用谓词查询可转换的属性,因为整个对象图都在内存中并使用本机 Cocoa 进行查询。
【讨论】:
我最终为date
对象的每个属性创建了单独的属性。谢谢。以上是关于NSFetchRequest 谓词语法的主要内容,如果未能解决你的问题,请参考以下文章
NSFetchRequest 谓词不一致 iOS (NSFetchedResultsController) 与 Mac (NSArrayController)
你如何构造 NSFetchRequest setHavingPredicate: 的谓词?