如何跟踪不同时间段的数据 (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)。
我的问题是:随着时间的推移跟踪变量的最佳方法是什么,这样当用户选择一个时间段时,变量的值可以更新以反映该变化?
几个例子来阐明我的意思:
- 最初创建每月计时器来跟踪锻炼的用户应该能够切换到每周计时器并根据需要查看数据更新(一周内的数据应该少于一个月内的数据)。
- 已创建每日计数器的用户应该会在每天午夜看到每日计数器重置为 0,并可与前一天的值进行比较。
- 创建了 "total" 计数器的用户应该能够切换到任何时间段 ([=35=]) 并根据需要查看计数器更新。
我的应用程序的 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 对数据建模。使用此谓词进行查询将为您提供上周完成的所有任务的结果。谓词可以修改为工作几天、几个月、一年或任何指定的天数。
我正在尝试创建一个简单的 counter/habit 跟踪应用程序,允许用户查看他们在特定时间段内完成任务的次数 (daily/weekly/monthly/yearly/total)。
我的问题是:随着时间的推移跟踪变量的最佳方法是什么,这样当用户选择一个时间段时,变量的值可以更新以反映该变化?
几个例子来阐明我的意思:
- 最初创建每月计时器来跟踪锻炼的用户应该能够切换到每周计时器并根据需要查看数据更新(一周内的数据应该少于一个月内的数据)。
- 已创建每日计数器的用户应该会在每天午夜看到每日计数器重置为 0,并可与前一天的值进行比较。
- 创建了 "total" 计数器的用户应该能够切换到任何时间段 ([=35=]) 并根据需要查看计数器更新。
我的应用程序的 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 对数据建模。使用此谓词进行查询将为您提供上周完成的所有任务的结果。谓词可以修改为工作几天、几个月、一年或任何指定的天数。