我使用库上传图像。这个库正在工作异步。异步任务后返回数据
我的功能:
func upload() -> String {
let imageData:NSData = UIImageJPEGRepresentation(pureImage!, 100)!
var picture=""
SRWebClient.POST("http://domain.com/upload.php")
.data(imageData, fieldName:"image_field", data: ["username":"test","key":"test"])
.send({(response:AnyObject!, status:Int) -> Void in
if status == 200 {
let responseJSON = response! as! Dictionary<String, AnyObject>
let s_status=responseJSON["status"] as! Int
if s_status == 1 {
picture=responseJSON["picture"] as! String
print(picture)
}
}
},failure:{(error:NSError!) -> Void in
picture=""
})
return picture
}
正如你所看到的,我必须回到图片名称。但现在它总是返回空字符串,因为上传过程是异步的。如何在上传过程后返回图片名称?
出色答卷。我还会提到在完成块中传递,这是近来很常见的模式,并且类似于使用回调。 –
@DuncanC其实我并不是说回调只是一个函数回调。一个完成块也只是一个回调,毕竟一个块只是一个带有隐含参数的函数(它包含了所有捕获的状态,就像你写块时捕获的变量一样)。我会让答案更加明显。 – Mecki
完成块的另一个优点是块的代码可以在线提供,这有助于可读性。 –