Fetching Data from Core Data between epoch timestamps is inconsistent(在纪元时间戳之间从核心数据获取数据不一致)
问题描述
我正在使用以下谓词从表示一天的开始和结束的两个时间戳之间的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点输入的记录,这有点违背了目的。我可能会在获取记录后过滤记录,但我觉得这可能会创建自己的边缘案例
这篇关于在纪元时间戳之间从核心数据获取数据不一致的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在纪元时间戳之间从核心数据获取数据不一致


基础教程推荐
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01