从FirebaseStorage的结构中获取数据

问题描述 投票:0回答:1

这是我的挑战:我有一个结构。这是使用FirebaseDatabase中的documentSnapshot初始化的。 Struct返回一个数组,然后将其填充到“集合视图”中]

这很好,直到我试图将两个图像添加到数组中为止。它们存储在Firebase存储中。初始化时,引用键将传递到结构中(它们在这里,我测试过)。但是,创建myArray时,图像不存在。没有错误信息。 struct / array的所有其他部分都可以正常工作(距离计算等)

感谢任何人的帮助

struct myStruct {

    var myArray = [Any]()

    init?(Name: String, Amount: String, Description: String, SecondName: String, RID: String, GeoPoint: GeoPoint, DID: String) {

        var location = CLLocation()
        var myArray = [Any]()
        var distance: Double
        var imageA = UIImage()
        var imageB = UIImage()

        let refA = Storage.storage().reference().child("Images").child(todayDate).child(DID)
        refA.getData(maxSize: 1000 * 1240 * 1240) { data, error in
            if let error = error {
                print(error.localizedDescription)
            } else {
                imageA = UIImage(data: data!)!
            }
        }

        let refB = Storage.storage().reference().child("Icons").child(RID)
        refB.getData(maxSize: 1000 * 1240 * 1240) { data, error in
            if let error = error { print(error.localizedDescription)
                imageB = (UIImage(named: "DefaultIcon.png") as UIImage?)!
            } else {
                imageB = UIImage(data: data!)!
            }
        }

        location = CLLocation(latitude: GeoPoint.latitude, longitude: GeoPoint.longitude)
        distance = round(location.distance(from: userLocation)/10)*10


        myArray = [Name, Amount, Description, SecondName, String(Int(distance)), GeoPoint, imageA, imageB]

        self.menuItem = menuItem
    }
}

这是我的挑战:我有一个结构。这是使用FirebaseDatabase中的documentSnapshot初始化的。 Struct返回一个数组,然后将其填充到“集合视图”中。这很好,...

swift struct firebase-storage
1个回答
0
投票

看来您的结构要完全实例化,需要先等待两个异步数据任务完成(获取图像)。由于您启动了它们,但不必等待它们完成,因此在您将数据写入阵列时,图像数据根本不可用。

© www.soinside.com 2019 - 2024. All rights reserved.