ios - 在数据库中为重复事件建模,并使用UILocalNotification触发事件

标签 ios core-data uilocalnotification

我不确定这将如何工作,但是我想要的是与iPhone附带的Apple闹钟类似的东西。基本上,它只是让您选择警报的时间,命名警报,然后可以选择重复的频率(星期日-星期六)。根据您的选择,警报将触发一次或重复触发一次。

在我的核心数据模型中,我不确定如何建模。如果我只考虑普通的旧对象,那么我会认为我会有一些警报对象,并且其属性之一是数组。在该数组中,我可以具有周日至周日的日值。然后,在创建新的警报对象时,我将为选择的时间和选择的日期安排UILocalNotification。为了对数据库对象建模,我不确定应该做什么。我在想类似的东西:

警报-(名称/字符串)
日期-(星期天-星期六/由0到6的整数表示,从“警报”到“日期”的比例为1

假设在数据库中可以,那么我不确定应该如何安排UILocalNotifications,因为我认为每个应用程序只能有64个。我在想,我可以采用某种机制来安排可能的前64个警报,然后在打开应用程序时,它将仅重新计划接下来的64个事件。那是我会怎么做的吗?谢谢。

最佳答案

使用2个实体是多余的。我只需要Alarm实体,并具有一个整数属性即可保存警报天数。在实体外部,我将有一个枚举,该枚举定义了如何解释警报天数。就像是:

typedef AlarmDays {
    Monday           = 0,
    Tuesday          = 1 << 0,
    Wednesday        = 1 << 1,
    Thursday         = 1 << 2,
    Friday           = 1 << 3,
    Saturday         = 1 << 4,
    Sunday           = 1 << 5
} AlarmDays;

然后,您可以使用以下方法测试应该使用的日期:
if (alarm.alarmDays & Monday) {
    // the alarm should fire on mondays
}

而且,您可以使用UILocalNotification的功能(例如repeatInterval),因此无需向系统显式添加大量的通知。

关于ios - 在数据库中为重复事件建模,并使用UILocalNotification触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17310935/

相关文章:

ios - 在 iPhone 模拟器上测试 CoreLocation

swift - 如何从核心数据中的关系中获取值(swift)

swift - CoreData 仅在我重新启动应用程序后更新?

UILocalNotifications repeatInterval 使用 NSWeekdayCalendarUnit

ios - 在本地设置图标角标(Badge)编号是否需要 iOS 中的用户权限?

ios - UIApplication.sharedApplication.scheduledLocalNotifications 总是空的

ios - 在 iOS 单元测试中模拟 NSHTTPURLRequest 和 NSHTTPURLResponse

ios - 组件不会在 NavigatorIOS 中呈现 - React Native

ios - 如何在获得用户标题之前阻止执行

ios - 如何将更改从一个 ManagedObject 写入类似的 ManagedObjects