我有以下方法,主要使用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设置为该类的属性,那么即使在启动闭包的函数完成后,闭包内的任务也可以访问它。 –
在答案中增加了一个例子,显然你想有条件地做东西(比如如果事情不是零等) –