swift - 使用 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
行。
解决方案
您可以将结果转换为“字典数组”,然后创建对象。像这样的东西:
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)
}
})
推荐阅读
- java - Payara 中的 Apache Camel:查找“java:/TransactionManager”失败
- python - Azure 容器实例部署失败
- java - 使用 @ConfigurationProperties 解析的属性的要求
- excel - 在 VBA 函数中使用 Round 函数
- openmodelica - OmSimulator 与 Python(如何在 OmSimulator Python 上禁用输出文件更新)
- pug - 创建一个带有跨度的 li 和文本
- javascript - 如何从 forEach 调用一些全局变量
- corda - NodeRPCConnection.java 而不是 NodeRPCConnection.kt
- python - 字符串格式 - 法国口音
- javascript - 在 Flow 中声明一个通用形状的对象