swift - 如何使用 SDImageView 下载 TableViewCell 中的 URL?

标签 swift firebase firebase-realtime-database sdwebimage

我正在尝试将 SDImageView Cocoapod 与 TableView 一起使用,以从数据库中检索 URL 并将其转换为可 View 像。当我使用下面的代码时,我没有得到图像作为返回,我的代码有什么问题?谢谢!

var posts = [postStruct]()


override func viewDidLoad() {
    super.viewDidLoad()

    let ref = Database.database().reference().child("Posts")

    ref.observeSingleEvent(of: .value, with: { snapshot in

        print(snapshot.childrenCount)

        for rest in snapshot.children.allObjects as! [DataSnapshot] {

            guard let value = rest.value as? Dictionary<String,Any> else { continue }
            guard let  title = value["Title"] as? String else { continue }
            guard let  downloadURL = value["Download URL"] as? String else { continue }


            let post = postStruct(title: title, downloadURL: downloadURL)

            self.posts.append(post)

        }
        self.posts = self.posts.reversed(); self.tableView.reloadData()

    })

}


override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return posts.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
    let imageView = cell?.viewWithTag(200) as! UIImageView

   imageView.sd_setImage(with: URL(string: "downloadURL"), placeholderImage: UIImage(named: "placeholder.png"))

    let label1 = cell?.viewWithTag(1) as! UILabel
    label1.text = posts[indexPath.row].title
    return cell!

}

最佳答案

您需要将 SDWebimage 语法更改为 ->

var posts = [postStruct]()
var  downloadURL : String = ""

override func viewDidLoad() {
    super.viewDidLoad()

    let ref = Database.database().reference().child("Posts")

    ref.observeSingleEvent(of: .value, with: { snapshot in

        print(snapshot.childrenCount)

        for rest in snapshot.children.allObjects as! [DataSnapshot] {

            guard let value = rest.value as? Dictionary<String,Any> else { continue }
            guard let  title = value["Title"] as? String else { continue }
              downloadURL = value["Download URL"] as? String ?? ""


            let post = postStruct(title: title, downloadURL: downloadURL)

            self.posts.append(post)

        }
        self.posts = self.posts.reversed(); self.tableView.reloadData()

    })

}


override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return posts.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
    let imageView = cell?.viewWithTag(200) as! UIImageView

    imageView.sd_setImage(with: URL(string: downloadURL), placeholderImage: UIImage(named: "placeholder.png"))

    let label1 = cell?.viewWithTag(1) as! UILabel
    label1.text = posts[indexPath.row].title
    return cell!

}

其中 downloadURL 为 url 字符串。

关于swift - 如何使用 SDImageView 下载 TableViewCell 中的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44533245/

相关文章:

swift - 如何从 AVFoundation 错误获取更多信息

ios - 搜索包含特定日期属性的核心数据数组的索引

ios - Realm() 初始化返回 nil

swift - 如何在自定义类中使用presentViewController?

javascript - 如何使用 where 子句从 firestore 中删除文档

android - Firebase第二次没有向手机发送验证码

ios - 面临设备未收到 Ios 通知的问题。相同的设置在 Android 上运行良好

android - 如何通过用户电子邮件获取 userID Firebase android?

javascript - firebase 数据列表

ios - Firebase 数据库,权限被拒绝(无规则)swift