我已经在我的iOS应用程序中定义了PFUser,我使用此功能来获取个人资料图片。 hwb
是profilePicture
,@NSManaged PFFile
是UIImage。
除了profilePictureImage
和getData()
是主线程上潜在的长时间运行操作之外,这很有用。
有人能想出一种实现此方法的好方法,以便可怕的部分在后台线程上运行吗?
谢谢!
fetchIfNeeded()
答案 0 :(得分:0)
更改方法,以便不是返回图像而是采用在图像可用时调用的闭包并将其作为参数传递。如果需要下载图像,可以立即调用,也可以在延迟调用后调用。
答案 1 :(得分:0)
按照您的说法执行此操作,使用:fetchIfNeededInBackgroundWithBlock
在后台运行任务。此外,您的image
函数应如下所示:
func imageInBackgroundWithBlock(block: ((UIImage?, NSError?) -> Void)?) {
var image: UIImage?
self.fetchIfNeededInBackgroundWithBlock({ (user, error) -> Void in
if error == nil {
// load the picture here
image = ...
} else {
println(error!.userInfo)
image = UIImage(named: "no_photo")!
}
// return after fetching the user and the image
block?(image, error)
})
}