核心数据:统计连续天数

Core Data: Count Number of Consecutive Days

我创建的核心数据模型包含一个具有 timestamp 属性的 Session 实体。我目前正在寻找一种有效的方法来查询连续天数的核心数据。换句话说,如果用户在过去的六天内每天都创建了一个会话,那么连续天数等于六。

乍一看,这个问题似乎无法通过巧妙的查询来解决。我是不是忽略了什么?

另一种解决方案是向 Core Data 请求一批会话,并手动计算连续的天数,直到链断裂。有没有我遗漏的解决方案?

我认为执行此操作的一个好方法是覆盖 awakeFromInsert,您可能正在创建时间戳。就在那里,您可以查询前几天(使用谓词比较一天的开始和结束很容易)并存储数字。我认为这并不夸张或多余,存储一个 int 很便宜。

现在您程序中的逻辑变得非常简单:天数随时可用;您可以计算连续会话的历史记录;您可以轻松找到序列中的所有日期,包括一天多个会话等。