1

我正在开发一个应用程序,该应用程序根据用户设置的偏好提醒用户采取的行动。他们可以设置开始日期和结束日期(结束日期是可选的)。然后他们可以设置频率:

  • 日常的
  • 周刊
  • 每 1-9 天
  • 每 1-9 周
  • 在每月的某些日子
  • 具体日期

现在,我需要能够检索即将到来和过去的提醒列表以显示在 UITableView 中。如果用户忽略通知(不要在应用程序中检查提醒),那么我需要能够跟踪这一点,以便以后进行数学计算。

首先,我的想法是让 UITableView 只查看提醒集并找出在任何一天会触发哪些通知。

这需要对日期进行大量计算,并且不允许我知道用户是否忽略了提醒。

我的下一个(也是当前的)想法是存储一个数据库表(如下所示)并在未来一个月内输入提醒。任何未设置为响应的行都意味着他们忽略了它。这也将使 UITableView 变得非常简单。

有没有更好的方法来做到这一点?我应该提前多久创建数据库行?如果他们更改了提醒,我可能不得不在行上调用 DELETE 并重新输入它们;就 id 而言,这可以有很高的数字吗?

reminderLogs
-------------
id
reminderID
actionReceived
timestampShould
timestampTaken
comments
4

2 回答 2

1

这听起来像是使用 Core Data 的好地方。设置星号可能会很痛苦,尤其是当您不熟悉它时,但是一旦您这样做了,您将拥有一个(相对)易于查询的持久数据存储。您还可以更改存储对象的属性,而无需删除和重新创建它们,因此可以在用户添加或修改任务时轻松添加或修改数据库中的记录。如果您需要显示列表或对存储的数据运行任何计算,正确的查询将提取您需要知道的所有内容。

Web 上有许多 Core Data 教程,但您不妨从Apple 的示例开始。

于 2012-07-13T02:05:03.603 回答
1

首先,+1 给 Husker Jeff 和他使用 Core Data 的建议。它应该是您构建通知规则的持久性方法。

我目前正在研究负责定期通知的服务器端组件。查看您对重复事件类型的描述, UILocalNotification 不够灵活,无法仅使用 repeatInterval 属性。

我强烈建议阅读以下内容:

  1. Martin Fowler 的重复事件模式。
  2. IceCube,一个用 Ruby 开发的循环事件库,用于处理循环事件和时间表达式。它应该为您提供如何实现对象图的好主意。
  3. 关于构建 iCal 友好数据库模式的 Stack Overflow 主题。

我建议尽可能依赖 UILocalNotification 的 repeatInterval。您可能希望将诸如weeklyRule 和dailyRule 之类的事情委托给UILocalNotification 的重复间隔。

对于像每 n 天和每 n 周这样的规则,您可能需要为它们创建自己的时间表达式和规则。

于 2012-07-13T02:18:51.887 回答