2017-03-08 99 views
1

HI我正在開發一個應用程序,該應用程序能夠通知特定的時間和日期,並顯示在TableViewController中。所以我在表格中有多個通知。我如何刪除特定的通知? 如果我刪除包含通知的行,它仍然不會被刪除。在swift中刪除通知3

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
     let context = getContext() 
     if editingStyle == .delete { 
      // Delete the row from the data source 
      context.delete(names[(indexPath as NSIndexPath).row]) 

      let a = (names[(indexPath as NSIndexPath).row]) 

      let center = UNUserNotificationCenter.current() 
      let notifToDelete = a.name 

      center.getPendingNotificationRequests { (notifications) in 
        print(notifications) 
       for item in notifications { 
        if(item.identifier.contains(notifToDelete!)) 
{ 
    center.removePendingNotificationRequests(withIdentifiers: [item.identifier]) 

    } 
       } 
      } 

      do { 
       try context.save() 
      }catch { 
       let saveError = error as NSError 
       print(saveError) 
      } 
      names.remove(at: (indexPath as NSIndexPath).row) 

      tableView.deleteRows(at: [indexPath], with: .automatic) 

這不會影響任何方式。通知仍在設定的時間運行。 (通知設置在不同的視圖控制器中)。

回答

3

刪除此塊的不必要的代碼:

center.getPendingNotificationRequests { (notifications) in 
        print(notifications) 
       for item in notifications { 
        if(item.identifier.contains(notifToDelete!)) 
{ 
    center.removePendingNotificationRequests(withIdentifiers: [item.identifier]) 

    } 
       } 
      } 

相反,這樣做:

center.removePendingNotificationRequests(withIdentifiers: [notifToDelete]) 
+0

謝謝!!刪除了通知,但刪除了上次保存的通知。 –

+0

哦!我想出了我爲通知設置的標識符與我給它刪除的標識符不同。萬分感謝 !! –

+0

不用擔心。如果有幫助,請您接受我的回答。 –