2017-01-30 4 views
0

私はユーザーを作成するアプリを持っています。これらのユーザのそれぞれは、オブジェクトを作成することができる。私は各ユーザにそのオブジェクトに対するローカル通知を設定する権限を与えます。通知用の識別子の命名規則は、人名+作成したオブジェクトの名前を使用することです。私がしたいことは、その人がアプリケーションから削除されたときにすべての通知を削除することです。識別子に基づいて複数のローカル通知を削除しようとしています

私は何とかその人物のすべてのオブジェクトをループし、その名前を使用して削除する必要のある通知を特定する必要があります。ここで

は私が

 // remove local notifications 
     let center = UNUserNotificationCenter.current() 
     let personToSerch = person.name! 

     var filterdItemsArray = [String]() 

     center.getPendingNotificationRequests { (notifications) in 

      print("Count: \(notifications.count)") 

      func filterContentForSearchText(searchText: String) { 
       filterdItemsArray = notifications.filter { item in 
        return item.contains(searchText) 
       } 
      } 

      filterContentForSearchText(searchText: personToSerch) 
      print("\(filterdItemsArray.count) count of the filter array") 

     } 

     center.removePendingNotificationRequests(withIdentifiers: filterdItemsArray) 

をしようとしているものですそれだけで動作していないようですし、私のリターンラインは、読み込みエラーがスローされます:タイプUNNotificaionRequestの値は、メンバーが含まれていません。

答えて

1

次のコードが有効かどうかを確認してください。

let center = UNUserNotificationCenter.current() 
     let personToSerch = person.name! 
     center.getPendingNotificationRequests { (notifications) in 
      for item in notifications { 
       if(item.identifier.contains(personToSerch)) { 
        center.removePendingNotificationRequests(withIdentifiers: [item.identifier]) 
       } 
      } 
     } 
+0

あなたの答えに従わなかったのは残念ですが、idtodeleteはどこから来たのですか? – icekomo

+0

idtodeleteは、あなたのケースで削除したいpersonToSerchです。 – CST

+0

私が達成しようとしていることを示すためにコードを更新しました。その人に関連するすべての通知を見つける必要があります。それ以上のものがあるかもしれません。その配列の述語として人名を使用して配列を作成できるはずです。 – icekomo

関連する問題