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
。但即使在取消通知后,通知仍然每小时出现一次。
那为什么不能正确取消?谢谢!
答案 0 :(得分:2)
系统拥有的通知是您作为字段持有的通知的副本。您无法取消正在举行的那个,因为它不是系统中的通知实例。
您可以通过cancelAllLocalNotifications
取消所有现有通知,或通过scheduledLocalNotifications
属性迭代所有现有实例来查找要取消的通知。