在嵌入函数 returns 值之后调用函数中的 completionHandler? Swift

Call completionHandler in function after embedded function returns value? Swift

在包含另一个函数的函数中调用 completionHandler() 的正确方法是什么?基本上,我想等到嵌入函数完成后再调用 completionHandler。

func somefunc {    

transferManager?.download(downloadRequest).continue( {(task: AWSTask) -> AnyObject! in

    // Your handler code here
    if (task.error != nil) {
        print("- Error while downloading!")
        print(task.error)
    }

    else if (task.result != nil) {
        //let downloadOutput: AWSS3TransferManagerDownloadOutput = task.result as! AWSS3TransferManagerDownloadOutput
        do {
            let dFile  = try NSString(contentsOf: downloadingFileURL as URL, encoding: String.Encoding.utf8.rawValue)
            print(dFile)
            modelsParseCSV(contentsOfURL: downloadingFileURL)
        }
        catch {
            print("- Error: Unable to retrieve contents of csv file")
        }
    }
    else {
        print("- Uknown error: AWSS3 get file")
    }


    print("------------ AWS Get Models File End ----------")
    return nil

})

completionHandler()
}

我能够解决我自己的问题。以下代码调用完成处理程序并在嵌入函数完成后:

func AWS_getModelsFile(AWSMake: String, completionHandler: (() -> Void)! ) {

    .........

    transferManager?.download(downloadRequest).continue( {(task: AWSTask) -> AnyObject! in

        // Your handler code here
        if (task.error != nil) {
            print("- Error while downloading!")
            print(task.error)
        }

        else if (task.result != nil) {
            //let downloadOutput: AWSS3TransferManagerDownloadOutput = task.result as! AWSS3TransferManagerDownloadOutput
            do {
                let dFile  = try NSString(contentsOf: downloadingFileURL as URL, encoding: String.Encoding.utf8.rawValue)
                print(dFile)
                modelsParseCSV(contentsOfURL: downloadingFileURL)
            }
            catch {
                print("- Error: Unable to retrieve contents of csv file")
            }
        }
        else {
            print("- Uknown error: AWSS3 get file")
        }


        print("------------ AWS Get Models File End ----------")
        completionHandler()
        return nil

    })
}