我正在使用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