0
내가 진행하고있는 프로젝트 중 하나에서 데이터베이스의 여러 항목에 대한 여러 알림을 예약하고 있습니다. 일부 코드는 다음과 같습니다.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의 한 항목은 whichDatesArray에있는 항목 수에 따라 여러 번 사용할 수 있습니다. 그리고 전에이 else/if 절이 있기 때문에이 마지막 배열에 해당 논리를 사용할 수 없습니다. 결국 나는 콜백 함수가 보류중인 모든 알림을 검색 할 수있게하려고한다. – Croisciento