【问题标题】:NSPredicate timestamp without dateNSPredicate 没有日期的时间戳
【发布时间】:2015-12-29 08:29:43
【问题描述】:

我正在使用 NSPredicate 从 Core Data 中获取项目。这些项目的创建时间必须在下午 4 点到 6 点之间。我怎样才能使用NSPredicate 来做到这一点?现在我正在使用:

let predicate = NSPredicate(format: "time >= \(startTime) AND time <= \(endTime)")

但这也考虑了日期,我只希望它检查时间。这是否可以使用NSPredicate 或者我应该只获取所有项目,手动删除日期,然后通过检查时间过滤掉项目?

【问题讨论】:

    标签: swift core-data nsdate nspredicate


    【解决方案1】:

    您确实应该为实体添加一个“小时时间戳”,它可以在您现有的日期时间值更新时自动设置,并且您可以将其用于获取谓词。谓词和检查日期时间戳,但只能从 角度(如您当前的代码使用)。

    【讨论】:

    • 谢谢,我想我得改变我的实体了。您是否还知道如果我将 fetch 结果限制在 500 左右然后手动过滤它会降低多少性能?
    • 处理 500 件物品会很快,但根据您的要求,我不知道您将如何选择要退回的 500 件物品(最新的?)
    • 啊,好的,很高兴知道。上面的例子只是我代码的一点点 sn-p。原文有更多谓词。我想最干净的方法仍然是像你建议的那样添加一个小时的时间戳。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2021-10-02
    • 2021-01-14
    • 1970-01-01
    相关资源
    最近更新 更多