我有以下方法,主要使用username參數從後端Parse加載用戶的圖片。Swift - UIImage和Nil Value
func getProfilePicture(username: String) -> UIImage
{
var tempImage:UIImage = UIImage(named: "sample-qr-code.png")!
let query: PFQuery = PFQuery(className: "_User")
query.whereKey("appUsername", equalTo: username)
query.findObjectsInBackgroundWithBlock {
(objects:[PFObject]?, error:NSError?) -> Void in
for object in objects! {
let imageFiles = object["ProfilePic"] as! PFFile
imageFiles.getDataInBackgroundWithBlock({
(imageData: NSData?, error: NSError?) -> Void in
if (error == nil) {
tempImage = UIImage(data:imageData!)!
}
})
}
}
return tempImage
}
在該方法的第一行,我的理由很簡單,它不能爲空值分配給tempImage否則它拋出零例外。當上面的代碼運行時,它會遍歷所有階段和條件(通過使用打印函數進行日誌記錄來檢測),但返回的圖像仍然是sample-qr-code.png,而不是數據庫中的那個。有沒有從後端拋出錯誤,該行被執行:
tempImage = UIImage(data:imageData!)!
有人可以幫我解決這是爲什麼不顯示從後端的畫面?我猜測它可能與初始化和範圍有關,但不確定。
你能否詳細說明你在這裏的意思......它本身的屬性? –
假設函數存在於仍在內存中引用的類中,如果將UIImage設置爲該類的屬性,那麼即使在啓動閉包的函數完成後,閉包內的任務也可以訪問它。 –
在答案中增加了一個例子,顯然你想有條件地做東西(比如如果事情不是零等) –