【问题标题】:Storing UILocalNotifications for Easy Processing存储 UILocalNotifications 以便于处理
【发布时间】:2012-07-13 00:23:40
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: objective-c ios notifications uilocalnotification


    【解决方案1】:

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

    网络上有许多 Core Data 教程,但您不妨从 Apple's example 开始。

    【讨论】:

    • 我考虑过 Core Data,但我想最终在 Android 和 WP7 上制作应用程序,所以只使用 sqlite 不是更容易吗?
    【解决方案2】:

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

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

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

    1. Martin Fowler's Pattern for recurring events.
    2. IceCube, a reccuring events library developed in Ruby for dealing with recurring events and temporal expressions. It should give you a good idea for how to implement your Object Graph.
    3. Stack Overflow topic on building an iCal friendly DB schema.

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多