OGeek|极客世界-中国程序员成长平台

标题: ios - 函数不会运行所有行 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 20:48
标题: ios - 函数不会运行所有行

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

func fetchAllPostImages() {
    print("fetchAllPostImages function")
    self.ref.child("osts").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



Best Answer-推荐答案


看起来 snapshotUrl.value 是一个可选包装的 URL。如果你想把它转换成字典,你只需要一个键和一个值。

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

这是一些演示我的意思的 Playground 代码。这是按原样工作的:

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()

关于ios - 函数不会运行所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53270568/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4