首页 > 解决方案 > 使用 SwiftJSON 将 Alamofire 结果 JSON 加载到表视图中

问题描述

我正在尝试使用从 Web API 检索到的 JSON 数据填充 tableview。

我的用户模型有一个类:

class UserModel {
    var userID: String?
    var fullName: String?
    var emailAddr: String?

    init(userID: String?, fullName: String?, emailAddr: String?) {
        self.userID = userID
        self.fullName = fullName
        self.emailAddr = emailAddr
    }
}

我正在尝试填充:

func getUserList(){        
    Alamofire.request("myURL here")
        .responseJSON(completionHandler: { (response) in
            switch response.result {
            case .success(let value):
                ProgressHUD.dismiss()
                let json = JSON(value)
                print(json)

                for (_, _) in json {
                    let user = UserModel(userID: "userID", fullName: "fullName", emailAddr: "email")

                    self.users.append(user)
                }
                self.tableView.reloadData()

                ProgressHUD.dismiss()
            case .failure(let error):
                print(error.localizedDescription)
            }
        })

的输出print(json)是:

[{"userID":"bbloggs","fullName":"Billy Bloggs","email":"bbloggs@bloggs.com"},{"userID":"bnomates","fullName":"Billy Nomates", “电子邮件”:“bnomates@something.org”}]

代码没有进入'for'块并直接跳转到该self.tableView.reloadData行。

标签: swiftuitableviewalamofireswifty-json

解决方案


您可以将结果转换为“字典数组”,然后创建对象。像这样的东西:

func getUserList(){
    Alamofire.request("myURL here")
        .responseJSON(completionHandler: { (response) in
            switch response.result {
            case .success(let value):
                ProgressHUD.dismiss()
                let json = JSON(value)
                print(json)

                if let jsonArray = json as? [[String: Any]] {
                    let user = UserModel(userID: "userID", fullName: "fullName", emailAddr: "email")
                    self.users.append(user)
                }
                self.tableView.reloadData()

                ProgressHUD.dismiss()
            case .failure(let error):
                print(error.localizedDescription)
            }
        })

推荐阅读