coredata NSPredicate 中的日期比较

Posted

技术标签:

【中文标题】coredata NSPredicate 中的日期比较【英文标题】:Date comparison in coredata NSPredicate 【发布时间】:2014-02-19 14:09:55 【问题描述】:

在我的应用程序中,我使用的是CoreData。一些日期值在 coredata 中存储为NSString。 在我的Interface Builder 中,我有一个文本字段。当我在我的文本字段中输入日期时,此日期将比较保存在 coredata 中的日期。

解决方案是什么。我只是通过这种方式Example 它不适用于我的项目,因为我想在我的NSPredicate 方法上将字符串转换为日期。

我的代码是

NSPredicate *p3 = [NSPredicate predicateWithFormat:@"acc_date >= %@ AND acc_date<=%@", theDate, date1];

这里acc_date 是数据库中存储为字符串theDate 的日期,date1 是我的输入

【问题讨论】:

我想将值与 coredata 进行比较 将 'acc_date' 存储为 'NSDate' 以便您轻松比较 【参考方案1】:

如果您继续将日期存储为字符串,那么您将无法进行任何类型的比较,就像您正在尝试的那样。

如果您将它们存储为实际的 NSDate 实例,那么您的比较将起作用。问题不在于您的谓词,而在于您如何在 Core Data 中存储数据。

我建议迁移您的数据库,无论是使用大量迁移还是手动迁移。如果您的数据是一次性的,那么我会更改字段并重置您的数据库以使用 NSDate 实例。

【讨论】:

我明白这个问题。我只是将字符串更改为数据格式

以上是关于coredata NSPredicate 中的日期比较的主要内容,如果未能解决你的问题,请参考以下文章

CoreData:NSPredicate 按日期过滤

使用 NSPredicate 按日期过滤 coredata 不返回任何内容

CoreData NSPredicate 按日期获取数据

NSPredicate - 核心数据 - 比较两个属性

NSPredicate 中的 SQL ORDER BY 等价物 - CoreData

NSPredicate,CoreData 中的空格。如何修剪谓词?