使用NSDate从Coredata中获取对象

时间:2016-12-04 06:49:50

标签: objective-c core-data nsfetchrequest

我在数据库中有10条记录。我想获取date == mydate的记录。

例如,数据库中有2条记录,其日期为[NSDate dateWithTimeIntervalSinceReferenceDate:502479617.512]. (以毫秒为单位)。

我正在使用

将上述日期转换为NSDate
2016-12-03 17:40:17 +0000

我正在2016-12-03 17:40:17 +0000

我有日期参数'502479617.500',它返回相同的NSDate visibility: hidden; position: absolute;

但是当我尝试从coredata获取时,我得到0个对象。这是因为数据库中的毫秒数。如何丢弃毫秒来获取具有相同日期,时间和秒数的记录。

3 个答案:

答案 0 :(得分:0)

NSDate属性将存储为NSDate属性,除非"使用基本数据类型的标量属性"复选框已标记。

在这种情况下,核心数据属性将存储为NSTimeInterval(double)。

答案 1 :(得分:0)

您可以采用以下两种方式之一:

首先,您可以在存储NSDate时消除秒小数。可以通过覆盖didSet属性来实现自动化。您也可以在您进行转换的任何地方执行此操作。

或者,您可以在获取时指定一秒的间隔。您的获取请求将需要这种谓词:

NSPredicate(format: "date >= %@ && date < %@", aDate, aDate.addingTimeInterval(60))

目标-C

[NSPredicate predicateWithFormat:@"date >= %@ && date < %@", 
     aDate, [aDate dateByAddingTimeInterval:60]];

答案 2 :(得分:0)

只需将其保存为NSString即可。然后在需要时转换回双倍。