为什么我不能取消重复的UILocalNotification?

时间:2015-07-11 19:04:46

标签: ios iphone swift ipad

Ciao,tout le monde。在我的Swift应用程序中,在一个方法中安排了UILocalNotification,该方法将在加载UIViewController一段时间后调用,它每小时重复一次(使用repeatInterval = .CalendarUnitHour)。我将此UILocalNotification实例存储在UIViewController的私有属性中,以便稍后我可以取消它。当用户按下UIViewController中的按钮时,操作方法将触发取消通知实例,我使用此代码(代码也用于deinit UIViewController }}:

if let notification = notificationProperty {
    UIApplication.sharedApplication().cancelLocalNotification(notification)
    notificationProperty = nil
}

我在此处使用if-let语句来防止意外取消nil UILocalNotification。但即使在取消通知后,通知仍然每小时出现一次。

那为什么不能正确取消?谢谢!

1 个答案:

答案 0 :(得分:2)

系统拥有的通知是您作为字段持有的通知的副本。您无法取消正在举行的那个,因为它不是系统中的通知实例。

您可以通过cancelAllLocalNotifications取消所有现有通知,或通过scheduledLocalNotifications属性迭代所有现有实例来查找要取消的通知。