如何跟踪不同时间段的数据 (Swift) - Counter/Habit Tracking App

How to keep track of data over various periods of time (Swift) - Counter/Habit Tracking App

我正在尝试创建一个简单的 counter/habit 跟踪应用程序,允许用户查看他们在特定时间段内完成任务的次数 (daily/weekly/monthly/yearly/total)。

我的问题是:随着时间的推移跟踪变量的最佳方法是什么,这样当用户选择一个时间段时,变量的值可以更新以反映该变化?

几个例子来阐明我的意思:

我的应用程序的 UI 基本上是一个自定义表格视图,其中包含计数器编号、计数器名称以及跟踪计数器编号的时间段。详细视图允许用户从计数器的值中添加 to/subtract。

我已经绞尽脑汁 Google 很长时间了,所以非常感谢任何帮助!

每个任务都应该有一个日期。当应用程序需要查询每个 day/week/month/year 的平均值时,您可以使用 NSPredicate 来限制给定时间段内的结果。

例如,这里有一个谓词模拟了我为我的应用程序编写的上周场景:

  func lastWeekPredicate() -> NSPredicate {
    let calendar = NSCalendar.currentCalendar()
    let endDate = NSDate()
    let startDate = calendar.dateByAddingUnit(.CalendarUnitDay, value: -7, toDate: endDate, options: nil)
    return NSPredicate(format: "day >= %@ AND day =< %@", argumentArray: [startDate!, endDate!])
  }

假设您使用 Core Data 对数据建模。使用此谓词进行查询将为您提供上周完成的所有任务的结果。谓词可以修改为工作几天、几个月、一年或任何指定的天数。