【问题标题】:Downloading multiple files in background using Parse使用 Parse 在后台下载多个文件
【发布时间】:2015-11-19 02:12:54
【问题描述】:

我的问题:知道最后一张图片何时下载的最佳方法是什么,因为一旦下载了所有文件,我就需要更新 UI。

我正在从 Parse 下载一组 PFFile。我现在正在做的是:以这种方式从解析中获取 PFFiles 数组

func getAllUserPictures(completion: (imageFiles: [PFFile]) -> Void) {
         guard let id = currentUserID else {
        return
    }

    let query = PFQuery(className: "Profile")
    query.whereKey("objectId", equalTo: id)
    query.includeKey("avatars")
    query.findObjectsInBackgroundWithBlock { profile, error in
        guard let imageFiles = profile?.first?.objectForKey("avatars") as? [PFFile] else {
            return
        }
        completion(imageFiles: imageFiles)
    }
}

从完成处理程序获得 imageFile 数组后,我会继续以这种方式下载它们:

func getUserPicturesWithBlock(completion: (result: [UIImage]) -> Void) {
    DataManager.sharedInstance.getAllUserPictures { imageFiles in
        for file in imageFiles {
            file.getDataInBackgroundWithBlock({ data, error in
                guard let data = data, let image = UIImage (data: data) else{
                    return
                }

                self.imagesArray.append(image)
            })
        }
    }
}

【问题讨论】:

    标签: ios swift parse-platform cloud background-process


    【解决方案1】:

    您是否考虑过使用来自ParseUI 框架的多个PFImageView

    您可以在完成查询时将每个 PFFile 分配给一个 PFImageView,然后在每个 PFImageView 上调用 loadInBackgroundPFImageView 类会在数据加载后自动处理更新图像,这也会在获取每个图像后立即更新,而不是等待所有图像一起更新。

    或者,为了保持与您已有的结构相似的结构,您可以使用 imageFiles 数组的大小来判断它们何时已全部加载。在完成每个文件的加载后,您可以检查加载的图像数量是否等于数组的总大小。

    【讨论】:

    • 我使用了你在另一种情况下建议的第一种方法,当我在单元格中有 UIImageView 并且它们会自行处理时,但在这种情况下,我有一个 UIScrollView,我在下载所有图像后添加它们.已经使用了您建议的第二种方法,但我担心其中一个下载可能由于某种原因而失败,并且 imageFiles 和 PFFiles 的计数不会相等,从而阻止 UI 更新。
    • 为什么每次下载后不更新用户界面?刷新 UI 是一项非常高效且快速的任务
    • 因为我只需要在滚动视图中设置一次图像,以防止用户滚动时出现“白页”。我希望用户等到所有下载完成,而不是在这种情况下不显示完整视图。下载在几秒钟内完成,问题是我需要一个完成处理程序之类的东西,它会在所有图像下载完成时发出通知,包括下载失败的情况。
    • 排序重要吗?如果顺序无关紧要,那么您只能将完成的图像添加到 UI 并在新图像进入时刷新/添加它们。
    • 是的,在这种情况下订购是必须的!
    猜你喜欢
    • 2014-05-07
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多