Ios 仅通过检查最后x位来查询整数字段

Ios 仅通过检查最后x位来查询整数字段,ios,core-data,ios8,Ios,Core Data,Ios8,我有一个格式为YYYYMMDD的整数字段,我想返回在一个月的某一天所做的所有记录。是否有办法在NSPredicate中执行此算法,以便将其转换为SQL(用于优化查找) 基本上我需要执行以下操作:(标识符-楼层(标识符/100)*100)=天,或标识符%100==天(以比较快者为准),但这似乎在NSPredicate中不起作用。您似乎无法在谓词中执行数学运算 或者,是否有某种方法将字段强制转换为查询中的字符串?所以我可以用ENDSWITH 它是一个sqlite存储,所以我认为一些谓词比较函数(主要

我有一个格式为YYYYMMDD的整数字段,我想返回在一个月的某一天所做的所有记录。是否有办法在NSPredicate中执行此算法,以便将其转换为SQL(用于优化查找)

基本上我需要执行以下操作:
(标识符-楼层(标识符/100)*100)=天
,或
标识符%100==天
(以比较快者为准),但这似乎在NSPredicate中不起作用。您似乎无法在谓词中执行数学运算

或者,是否有某种方法将字段强制转换为查询中的字符串?所以我可以用ENDSWITH

它是一个sqlite存储,所以我认为一些谓词比较函数(主要是块)不能使用,因为它们仅限于内存存储


任何关于如何有效执行此操作的信息都将不胜感激。

您处于一个困难的境地,因为您确实应该将其视为具有零时间引用的日期对象,等等

在第二种选择中,如果它只是一个字符串,那么生活也会很简单

将其作为整数会使谓词变得粗糙

只是从臀部射击,但你试过把它当作一根绳子吗?尽管核心数据可能会对此表示不满,但SQLite并不在意


这是一个现有的应用程序,还是您有机会更改数据模型?

我会尝试使用
ENDSWITH
语法


SQLite倾向于以相当透明的方式在数字类型和字符串类型之间进行转换

为什么不将日期数据保存在日期类型中?这些日期标识符是标准化的,并在整个应用程序中使用,它们是挂钟日期(即不是从历元开始的时间点),没有时间。不管整数代表什么,问题仍然存在。我们需要根据整数的最后x位高效地进行查询。@Rob很遗憾,我认为您不能将predicateWithBlock与SQLite存储一起使用。噢,@Rob是对的。这实际上是可行的,它比我所想的
NSExpression
魔术简单得多。啊,只要将值作为字符串而不是另一个整数进行比较,这就行了。因此,
x ENDSWITH 25
不起作用,但是
x ENDSWITH“25”
起作用。谢谢我们可以更改数据模型,但是将值作为NSDate使用是不切实际的。我们将值转换为日期组件,并在整个应用程序中使用,因此整数是编码日期组件的最佳和最有效的方法。但是,把它当作一根绳子,并把它与另一根绳子相比较确实有效,这是一个很好的投篮!