首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PFFile管理子类PFUser的配置文件图片- Swift / iOS

使用PFFile管理子类PFUser的配置文件图片- Swift / iOS
EN

Stack Overflow用户
提问于 2015-06-24 02:50:34
回答 2查看 174关注 0票数 0

我已经在我的iOS应用中子类化了PFUser,并且我正在使用这个函数来获取头像。profilePicture@NSManaged PFFileprofilePictureImage是UIImage。

除了getData()fetchIfNeeded()是在主线程上潜在的长时间运行的操作之外,它工作得很好。

有没有人能想出一个好方法来实现这个方法,让可怕的部分在后台线程上运行?

谢谢!

代码语言:javascript
运行
复制
func image() -> UIImage!
{
    if !(self.profilePictureImage != nil)
    {
        if self.profilePicture != nil
        {
            self.fetchIfNeeded()
            if let data = self.profilePicture!.getData() {
                self.profilePictureImage = UIImage(data: data)
                return self.profilePictureImage
            }
        }else {
            return UIImage(named: "no_photo")!
        }
    }
    return self.profilePictureImage
}
EN

回答 2

Stack Overflow用户

发布于 2015-06-24 03:38:20

更改该方法,使其不是返回图像,而是接受当图像可用时调用的闭包,并将其作为参数传递。如果需要下载映像,则可以立即调用,也可以在延迟后调用。

票数 0
EN

Stack Overflow用户

发布于 2015-07-21 01:02:58

只需按您所说的操作,在后台使用:fetchIfNeededInBackgroundWithBlock运行任务。此外,您的image函数应该如下所示:

代码语言:javascript
运行
复制
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)
    })

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31011095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档