存储UILocalNotifications以便于处理

时间:2012-07-13 00:23:41

标签: objective-c ios notifications uilocalnotification

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

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

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

首先,我有了UITableView的想法,只需查看提醒集,并找出在任何一天会发出什么通知。

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

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

有没有更好的方法呢?我应该提前多远创建数据库行?如果他们更改提醒,我将不得不在行上调用DELETE并重新输入;在id的方面,这个数字真的很高吗?

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

2 个答案:

答案 0 :(得分:1)

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

Web上有许多核心数据教程,但您最好从Apple's example开始。

答案 1 :(得分:1)

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

我目前正在处理负责重复通知的服务器端组件。查看对周期性事件类型的描述,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.
  4. 我建议尽可能依赖UILocalNotification的repeatInterval。您可能希望将weeklyRule和dailyRule之类的内容委托给UILocalNotification的重复间隔。

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