2016-12-04 85 views
0

我在数据库中有10条记录。我想获取记录where date == mydate。使用NSDate从Coredata获取对象

对于例如,有2个记录数据库,其具有502479617.512日期(以毫秒为单位)。

我使用

[NSDate dateWithTimeIntervalSinceReferenceDate:502479617.512]. 

上述日期转换为NSDate的我越来越2016-12-03 17:40:17 +0000

我有日期参数 '502479617.500' 返回相同的NSDate 2016-12-03 17:40:17 +0000

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

回答

0

的NSDate属性将被存储为属性的NSDate,除非该复选框被标记为“用于原始数据类型使用标量属性”。

在这种情况下,核心数据的属性将被存储为一个NSTimeInterval(双)。

0

你可以做到这一点通过以下两种方式:

首先,你可以存储的NSDate时消除秒小数。它可以通过覆盖didSet来自动完成。无论您在何处进行所描述的转换,您都可以简单地做到这一点。

或者,也可以取时指定一秒的间隔。然后,您的读取请求需要这样的谓词:

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

Objective-C的

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

只要将它保存为NSString的。然后在需要时再转换为双倍。