gpt4 book ai didi

swift - 使用 SwiftJSON 将 Alamofire 结果 JSON 加载到 TableView 中

转载 作者:行者123 更新时间:2023-11-30 10:36:20 25 4
gpt4 key购买 nike

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

我有一个适合我的用户模型的类:

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":"Bily Bloggs","email":"bbloggs@bloggs.com"},{"userID":"bnomates","fullName":"Billy Nomates","email":"bnomates@something.org"}]

代码不会进入“for” block ,直接跳转到self.tableView.reloadData行。

最佳答案

实际上你不需要 SwiftyJSON 转换,因为结果已经是一个数组

guard let userArray = value as? [[String:String]] else { return }
for item in userArray {
let user = UserModel(userID: item["userID"]!,
fullName: item["fullName"]!,
emailAddr: item["email"]!)
self.users.append(user)
}
<小时/>

但是,我们鼓励您放弃 SwiftyJSON 并使用 Decodable。它更高效并且需要更少的代码

struct User {
let userID, fullName, emailAddr: String
}

func getUserList() {
Alamofire.request("myURL here")
.responseData(completionHandler: { (response) in // responseData is crucial
switch response.result {
case .success(let data):
ProgressHUD.dismiss()
do {
self.users = try JSONDecoder().decode([User].self, from: data)
} catch { print(error) }
self.tableView.reloadData()

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

关于swift - 使用 SwiftJSON 将 Alamofire 结果 JSON 加载到 TableView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57911596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com