NSPredicate 字符串

Posted

技术标签:

【中文标题】NSPredicate 字符串【英文标题】:NSPredicate string 【发布时间】:2013-07-30 14:31:08 【问题描述】:

我有一个NSPredicate 用于搜索Core Data

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"objID == %@ AND createDate >= %@ AND createDate <= %@",self.objID, self.fromDate, self.toDate];

我想扩展此谓词以包含日期范围,或者如果“createDate”为 nil。我对 SQL 类型搜索不太熟悉。

基本上,我想找到所有 Core Data 具有 objID 且在日期范围内或为零的实体。

if (objID == X && ((dateRange >= fromDate && dateRange <= toDate) || dateRange == nil))

我该怎么做?

【问题讨论】:

你试过把它翻译成谓词吗? 【参考方案1】:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"objID == %@ AND (createDate >= %@ AND createDate <= %@ OR createDate = nil)",self.objID, self.fromDate, self.toDate];

我刚刚添加了OR createDate = nil

检查this 答案。 Christopher Pickslay 说,你可以使用“nil”或“NULL”,但不能使用“NIL”。

【讨论】:

我不需要像在 If stmt 中那样将它们分组? @Log139,NSPredicate 根据逻辑代数对语句进行分组。 A AND B OR C 等于 (A AND B) OR C 好的,这个谓词分组是像(objID = X AND createDate &gt;= X AND createDate &lt;= X) OR createDate = nil吗? @Log139,是的。你可以吗?如果没有,只需在谓词的主体中添加括号 好的,谢谢。不,我需要它像 objID == X AND ((AND createDate &gt;= X AND createDate &lt;= X) OR create = nil) 一样 () 在谓词中工作吗?

以上是关于NSPredicate 字符串的主要内容,如果未能解决你的问题,请参考以下文章

公共云数据库查询不应该返回 nil

Core Data 获取一对多关系的数据

NSPredicate 字符串

NSPredicate 与字符串完全匹配

NSPredicate 用于评估字符串

复合谓词 NSPredicate