如何使用Swift的AFnetworking从URL显示图像?

时间:2018-04-11 04:09:47

标签: swift afnetworking

这将是一个超级noob问题,但我不知道如何将URL转换为数据和数据到UIimage。文本标签工作非常精美,但UI图像不起作用

我发现有些代码可以转换它们,但不知道如何使用它们。你能救我吗?

override func viewDidLoad() {
    super.viewDidLoad()

    let manager = AFHTTPSessionManager()
    let url = mainURL + "sample.php"

    manager.get(url, parameters: nil, progress: nil, success: { (task, res) in
        guard let json = res as? [String: Any] else {
            print ("not [String: Any]]")
            return
        }
        if let array = json["data"] as? [Any] {
            for i in 0 ..< array.count {
                if let row = array [ i ] as? [String: Any] {

                    let model = Model(t: row ["title"] as! String,
                                      n: row ["user"] as! String,
                                      d: row ["regdate"] as! String,
                                      imgUrl: row ["img"] as! String)


                    self.models.append(model)

            }
                self.tableView.reloadData()
            }

        }
    }) { (task, error) in
        print("error = \(error)")
    }

    self.tableView.estimatedRowHeight = 500

}

模型

class Model : NSObject {

//?
let data = try? Data(contetsOf: url!)
let img = UIImage(data: data!)
let imgView = UIImageView(image: img)

var title : String
var name : String
var date : String
var image : UIImage!

init(t: String, n: String, d: String, imgUrl: String){

    title = t
    name = n
    date = d
    image = UIImage(named: imgUrl)

}

和出口。

    mainCell.titleLabel.text = m.title //labels work fine
    mainCell.nameLabel.text = m.name
    mainCell.mainImgView.image = m.image

1 个答案:

答案 0 :(得分:0)

试试这个 只需将图像网址存储在模型类中而不是图像中。使用以下代码更新您的模型类

class Model : NSObject {

    var title : String
    var name : String
    var date : String
    var image : String

    init(t: String, n: String, d: String, imgUrl: String){
        title = t
        name = n
        date = d
        image = imgUrl
    }
}

// past code inside cellforRowAt
// download image from image URL

let url = URL(string: image)
URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
       if error != nil {
             print(error!)
             return
       }
       DispatchQueue.main.async {
             mainCell.mainImgView.image = UIImage(data: data!)
       }
}).resume()