函数返回后,将属性从Swift 3 Closure中传出

时间:2016-10-12 00:17:22

标签: ios swift closures dropbox

我正在使用Dropbox API v2进行文件传输。这些方法包括可以获得传输成功的闭包,但是我为执行传输而编写的方法总是在闭包完成之前返回,我永远不能设置属性。传输工作正常,我只想下载三个单独的文件,然后发出警报告诉用户成功。

我在SO上看了很多类似的问题,但到目前为止还没有人有解决方案。是否无法在闭包中捕获值并将其传递给另一个类?

我尝试过设置外部属性,静态属性和使用中间函数。什么都行不通。方法是:

func downloadFromDropbox(downloadFileName : String) -> Bool {
    var success = false

    if let client = DropboxClientsManager.authorizedClient {
    //file and directory stuff here

         client.files.download(path: dropFileName, overwrite: true, destination: destination)
            .response { response, error in
                if let response = response {
                    print(response)
                    success = true
                    print("success in the block: \(success)")//this prints correctly

                } else if let error = error {
                    print(error)
                    success = false
                }//if let response else
            }//.response block
            .progress { progressData in
                //print(progressData)
            }//.progress

    } else {

    //login stuff here

    }//if let client else

    print("and success before the return: \(success)") //this does not work-always false
    return success //this does not work-always false

}//downloadFromDropbox

任何指导都会受到赞赏.Swift 3,IOS 10,Xcode 8.0

0 个答案:

没有答案