【问题标题】:Fetch objects from Coredata using NSDate使用 NSDate 从 Coredata 获取对象
【发布时间】:2016-12-04 06:49:50
【问题描述】:

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

例如,数据库中有2条记录,日期为502479617.512(以毫秒为单位)。

我正在将上述日期转换为 NSDate 使用

[NSDate dateWithTimeIntervalSinceReferenceDate:502479617.512].

我收到2016-12-03 17:40:17 +0000

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

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

【问题讨论】:

    标签: objective-c core-data nsfetchrequest


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以通过以下两种方式之一:

      首先,您可以在存储 NSDate 时消除秒小数。它可以通过覆盖属性的didSet 来自动化。你也可以简单地在你描述的任何地方进行转换。

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

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

      目标-C

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-02
          • 2013-10-24
          • 1970-01-01
          • 2011-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多