Firebase 存储下载在第一次运行中没有通过 swift

周成民

这是我用来从 Firebase 存储中检索图像文件的代码:

    let group = DispatchGroup()
    print("starting ImageSetting")
    group.enter()
    for query in friendArray {
        if imageList[query.uid] == nil {
            print("going through iteration")
            self.profpicRef.child("profile_pic/" + query.uid + ".jpeg").getData(maxSize: 1
            * 1024 * 1024) { (data, error) in
                print("accessing image")
                if let error = error {
                    self.imageList[query.uid] = self.defaultImage
                } else {
                    self.imageList[query.uid] = UIImage(data: data!)
                }
            }
        }
    }
    group.leave()

我在ViewWillAppear. 我也尝试过,ViewDIdAppear但结果没有改变。

这是我在第一次运行时调用这个方法得到的结果

starting ImageSetting
going through iteration
going through iteration
going through iteration
going through iteration
going through iteration
going through iteration
going through iteration
going through iteration
going through iteration
going through iteration
going through iteration
going through iteration

所以第一次运行getData()没有通过。然而,在第二次运行时,该功能正常工作,我得到了所有的图像

有没有办法解决这个问题?

托德·凯珀尔曼

我怀疑问题在于您没有真正正确使用调度组。这里的问题是for循环本质上是立即执行和完成的——是的,这些回调将在稍后调用,但这不是代码告诉调度组离开的地方。

(此外,我notify在您的示例代码中没有看到调用,但我假设这是稍后调用的代码的一部分。)

因此,如果您在代码中执行某些依赖于已加载这些图像的操作,则会出现错误。而且我怀疑它可能会第二次工作,因为您正在抓取缓存数据,这可能确实为您的目的执行得足够快。

修复它的一种方法是确保在正确的位置添加调度组元素。也许像这样......

let group = DispatchGroup()
print("starting ImageSetting")
for query in friendArray {
    if imageList[query.uid] == nil {
        print("going through iteration")
        group.enter()
        self.profpicRef.child("profile_pic/" + query.uid + ".jpeg").getData(maxSize: 1
        * 1024 * 1024) { (data, error) in
            print("accessing image")
            if let error = error {
                self.imageList[query.uid] = self.defaultImage
            } else {
                self.imageList[query.uid] = UIImage(data: data!)
            }
            group.leave()
        }
    }
}
group.notify(queue: .main) {
    print("Images done loading")
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift viewWillAppear第一次没有使用TabBarController调用

来自分类Dev

Swift Scroll to UITextField 通过 UiscrollView 只在第一次出现错误

来自分类Dev

Firebase onChildAdded 第一次为空

来自分类Dev

使用 Firebase 每天执行一次 Swift 执行功能

来自分类Dev

避免在Firebase事务中的第一次读取时获取空currentData

来自分类Dev

避免在Firebase事务中的第一次读取时获取空currentData

来自分类Dev

避免在Firebase事务中的第一次读取时获取空currentData

来自分类Dev

避免在Firebase事务中的第一次读取时获取空currentData

来自分类Dev

Firebase在Swift中检索数据

来自分类Dev

Firebase和Swift中的快照

来自分类Dev

在Swift中从Firebase检索数据

来自分类Dev

Swift 中 Firebase .childChanged 的问题

来自分类Dev

停止观看仅在Swift中第一次正常

来自分类Dev

Swift iOS Kanna数据在viewDidLoad中第一次返回空

来自分类Dev

Swift Firebase无法在字典中存储值

来自分类Dev

将 Firebase 与 onesignal 结合使用时,应用程序在第一次运行时崩溃

来自分类Dev

Firebase - 下载特定的孩子 (Swift 3)

来自分类Dev

Xcode(Swift)中没有这样的模块“ Firebase”

来自分类Dev

Xcode(Swift)中没有这样的模块“ Firebase”

来自分类Dev

Swift 中的 Firebase 远程通知没有声音

来自分类Dev

Swift Firebase 查询 - 快照中没有结果

来自分类Dev

如何更新存储节点 firebase swift

来自分类Dev

Firebase填充阵列两次-Swift

来自分类Dev

通过用户名登录:Firebase,Swift

来自分类Dev

如何通过 uid 的 Swift Firebase 获取图像?

来自分类Dev

iOS中的Firebase.google.com Firebase动态链接(Swift)

来自分类Dev

Swift 5-Firebase-从Firebase中的数据创建数组

来自分类Dev

Swift Firebase搜索落后了一个

来自分类Dev

处理新Firebase和Swift中的错误

Related 相关文章

  1. 1

    Swift viewWillAppear第一次没有使用TabBarController调用

  2. 2

    Swift Scroll to UITextField 通过 UiscrollView 只在第一次出现错误

  3. 3

    Firebase onChildAdded 第一次为空

  4. 4

    使用 Firebase 每天执行一次 Swift 执行功能

  5. 5

    避免在Firebase事务中的第一次读取时获取空currentData

  6. 6

    避免在Firebase事务中的第一次读取时获取空currentData

  7. 7

    避免在Firebase事务中的第一次读取时获取空currentData

  8. 8

    避免在Firebase事务中的第一次读取时获取空currentData

  9. 9

    Firebase在Swift中检索数据

  10. 10

    Firebase和Swift中的快照

  11. 11

    在Swift中从Firebase检索数据

  12. 12

    Swift 中 Firebase .childChanged 的问题

  13. 13

    停止观看仅在Swift中第一次正常

  14. 14

    Swift iOS Kanna数据在viewDidLoad中第一次返回空

  15. 15

    Swift Firebase无法在字典中存储值

  16. 16

    将 Firebase 与 onesignal 结合使用时,应用程序在第一次运行时崩溃

  17. 17

    Firebase - 下载特定的孩子 (Swift 3)

  18. 18

    Xcode(Swift)中没有这样的模块“ Firebase”

  19. 19

    Xcode(Swift)中没有这样的模块“ Firebase”

  20. 20

    Swift 中的 Firebase 远程通知没有声音

  21. 21

    Swift Firebase 查询 - 快照中没有结果

  22. 22

    如何更新存储节点 firebase swift

  23. 23

    Firebase填充阵列两次-Swift

  24. 24

    通过用户名登录:Firebase,Swift

  25. 25

    如何通过 uid 的 Swift Firebase 获取图像?

  26. 26

    iOS中的Firebase.google.com Firebase动态链接(Swift)

  27. 27

    Swift 5-Firebase-从Firebase中的数据创建数组

  28. 28

    Swift Firebase搜索落后了一个

  29. 29

    处理新Firebase和Swift中的错误

热门标签

归档