Wait For Asynchronous Operation To Complete in Swift

后端 未结 3 1208
温柔的废话
温柔的废话 2020-12-01 00:53

I am not sure how to handle this situation as I am very new to iOS development and Swift. I am performing data fetching like so:

func application(application         


        
3条回答
  •  情书的邮戳
    2020-12-01 01:24

    you have to pass your async function the handler to call later on:

    func application(application: UIApplication!, performFetchWithCompletionHandler completionHandler: ((UIBackgroundFetchResult) -> Void)!) {
        loadShows(completionHandler)
    }
    
    func loadShows(completionHandler: ((UIBackgroundFetchResult) -> Void)!) {
        //....
        //DO IT
        //....
    
        completionHandler(UIBackgroundFetchResult.NewData)
        println("Background Fetch Complete")
    }
    

    OR (cleaner way IMHO)

    add an intermediate completionHandler

    func application(application: UIApplication!, performFetchWithCompletionHandler completionHandler: ((UIBackgroundFetchResult) -> Void)!) {
        loadShows() {
            completionHandler(UIBackgroundFetchResult.NewData)
            println("Background Fetch Complete")
        }
    }
    
    func loadShows(completionHandler: (() -> Void)!) {
        //....
        //DO IT
        //....
        completionHandler()
    }
    

提交回复
热议问题