函数不会运行所有行

时间:2018-11-12 21:46:03

标签: ios swift firebase firebase-realtime-database

我具有波纹管功能,但它似乎没有通过if相信的snapshotValue行,因为snapshotUrl.value不是字典。如果是这样,如何将其转换为一个?

func fetchAllPostImages() {
    print("fetchAllPostImages function")
    self.ref.child("Posts").child(self.userID).child(self.postNum).child("Images").observe(.childAdded, with: { snapshot in
        var snapshotUrl = snapshot.childSnapshot(forPath: "ImageUrl")
        var snapshotTimeStamp = snapshot.childSnapshot(forPath: "timeStamp")
        print("fhdsjaklhfkjdsfksahdjksfjlashfkljdhs")
        print(snapshot.childSnapshot(forPath: "ImageUrl"))
        print(snapshotUrl.value, "value")

        if let snapShotValue = snapshotUrl.value as? [String: String] {
            print("jkdfbhksafgsaghsjbbvcbcbcbccbbbbbbbbbbbbbbb")

            for (_, value) in snapShotValue {
                print(value)

                if let imageURL = URL(string: value) {
                    print(imageURL, "image url here")

                    do {
                        let imageAsData = try Data(contentsOf: imageURL)
                        let image = UIImage(data: imageAsData)
                        //                                let ImageObject = Media()
                        //                                ImageObject.image = image
                        var timeStamp = 0.0
                        self.arrayOfImgObj.append(Media(image: image!, timeStamp: timeStamp))
                        self.tableView.reloadData()
                        print(self.arrayOfImgObj.count, "array.count")
                    } catch {
                        print("imageURL was not able to be converted into data")
                    }
                }
            }
        }
    })
}

函数的输出:

fetchAllPostImages function 
fhdsjaklhfkjdsfksahdjksfjlashfkljdhs 
Snap (ImageUrl)
     https://firebasestge.googleapis.com/v0/b/copyyubidatabase.appspot.com/o/rVNvbWrC9aarXOTSHNXGoaIeR5B3%2Fpost:563592299%2Fimage1?alt=media&token=a0c4aeda-769a-48ac-85c8-ab595ccfdf08
     Optional(https://fireestorage.googleapis.com/v0/b/copyyubidatabase.appspot.com/o/rVNvbWrC9aarXOTSHNXGoaIeR5B3%2Fpost:563592299%2Fimage1?alt=media&token=a0c4aeda-769a-48ac-85c8-ab595ccfdf08)
     value

1 个答案:

答案 0 :(得分:0)

看起来,snapshotUrl.value是一个可选包装的URL。如果要将其转换为字典,则只需一个键和一个值。

我们无权访问snapshot的数据结构来告诉您如何正确使用它。

以下是一些游乐场代码,演示了我的意思。可以按原样工作:

import UIKit
import PlaygroundSupport

struct SnapShot {
    func childSnapshot(forPath: String) -> URLWrapper? {
        return URLWrapper(url: URL(string: "https://image.shutterstock.com/image-vector/sample-red-square-grunge-stamp-260nw-338250266.jpg")!)
    }
}

struct URLWrapper {
    var url:URL

    var value:String? {
        get {
            return url.absoluteString
        }
    }
}

func fetchAllPostImages() {
    let session = URLSession.shared

    print("fetchAllPostImages function")
    let snapshot = SnapShot()
    if let snapshotUrl = snapshot.childSnapshot(forPath: "ImageUrl"), let snapShotValue = snapshotUrl.value, let imageURL = URL(string: snapShotValue) {
        let task = session.dataTask(with: imageURL, completionHandler: { (data, response, error) in
            if let data = data {
                let image = UIImage(data: data)
                print(image ?? "none")
            }
        })
        task.resume()
    }
}

PlaygroundPage.current.needsIndefiniteExecution = true

fetchAllPostImages()
相关问题