我使用庫上傳圖像。這個庫正在工作異步。異步任務後返回數據
我的功能:
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
完成塊的另一個優點是塊的代碼可以在線提供,這有助於可讀性。 –