0
私が取り組んでいるプロジェクトの1つでは、私のデータベース内のさまざまな項目の複数の通知をスケジュールしています。ここにいくつかのコードがあります:Swift 3の複数のループに対する非同期コールバック
func setupNotifications() {
for medecine in medecineList! {
if !medecine.whichDaysArray.contains(Medecine.Days.EveryDay.rawValue) {
for day in medecine.whichDaysArrayDate {
for fTime in medecine.frequencyTimeDateArray {
self.createNotificationsForUniqueDays(parsedMedecine: medecine, parsedDay: day, parsedFTime: fTime)
}
}
}
else {
for fTime in medecine.frequencyTimeDateArray {
self.createNotificationsForEveryDay(parsedMedecine: medecine, parsedFTime: fTime)
}
}
}
self.callback()
}
func createNotificationsForEveryDay(parsedMedecine: Medecine, parsedFTime: Date) {
DispatchQueue.main.async {
// Create the notification
}
}
私は意図的に非同期スレッドに通知を作成する関数を配置しています。問題は、すべての非同期タスクがそのジョブの実行を終了したときにメソッドcallback()
を呼び出すことです。私はこれを達成する方法を知りません。
ご協力いただきありがとうございます!
私は残念なことにそれを行うことはできません。あなたが見ることができるので、私は複数のループを持っています。 frequencyTimeDateArrayの1つの項目は、whichDatesArrayにいくつの項目があるかによって、何度も利用できます。そして前のelse/if節があるので、この最後の配列にはそのロジックを使用できません。最後に、私のコールバック関数が保留中の通知をすべて取得できるようにしたい。 – Croisciento