在纪元时间戳之间从核心数据获取数据不一致 [英] Fetching Data from Core Data between epoch timestamps is inconsistent

查看:46
本文介绍了在纪元时间戳之间从核心数据获取数据不一致的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下谓词从表示一天的开始和结束的两个时间戳之间的Core Data获取记录:

let timeStampPredicate = NSPredicate(format: "timestamp >= %f AND timestamp < %f", startTimeStamp, endTimeStamp)

上述谓词在11:59:00 PM之前完全有效,但在它之后保存的任何记录(如11:59:22 PM)都不会由该谓词返回。

示例:

核心数据中的记录:

记录1:

Timestamp: 1631816962.0 
Date: 2021-09-16 18:29:22 +0000 // My TimeZone is +0530
Challenge ID: 1 
Value: 100.0

记录2:

Timestamp: 1631816902.0
Date: 2021-09-16 18:28:22 +0000 // My TimeZone is +0530
Challenge ID: 1
Value: 100.0

将值传递给谓词:

startTimeStamp : 1631730600.0 // 2021-09-15 18:30:00 +0000 

endTimeStamp : 1631817000.0 // 2021-09-16 18:30:00 +0000 

当我执行谓词时,仅返回1条记录,该记录在11:59:00 PM

之前插入

有人能帮我了解发生了什么事或我做错了什么吗?

推荐答案

我仍然不确定是什么原因导致了问题,因为该谓词似乎没有问题。

为了排除所有可能性,我甚至尝试使用NSComparisonPredicate,但结果仍然相同。

正如@Larme在评论中建议的那样,我尝试在从核心数据中获得所有数据后对数据进行筛选。

对获取的数组执行了简单的filter(_:)操作。此方法工作正常。

如果有人可以确认filter是否是处理不超过300条记录的数组的方法。

更新1:

如果我使用BETWING谓词,它可能会起作用:

let predicate = NSPredicate(format: "%K BETWEEN {%f, %f}", argumentArray: [#keyPath(CD_Model.timestamp), startTimeStamp, endTimeStamp])

但它也包括第二天在凌晨12点输入的记录,这有点违背了目的。我可能会在获取记录后过滤记录,但我觉得这可能会创建自己的边缘案例

这篇关于在纪元时间戳之间从核心数据获取数据不一致的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆