gpt4 book ai didi

ios - 如何使用 Swift 4.2 将具有可编码结构的 JSON 响应加载到 TableView 中?

转载 作者:行者123 更新时间:2023-11-28 10:33:41 25 4
gpt4 key购买 nike

在我的场景中,我正在尝试为我的 JSON 响应创建 Codable。我已经完成了 codable 结构,但我不知道如何将它loadtableview 中。在这里,每当我选择多个 tableview 单元格时,我需要获取所有选定的单元格数据 username 和 userid。我不知道如何开始,请给我一些建议。

我的回应

{
"status": 200,
"user_list": [
{
"user_id": “1234”,
"permission": 1,
"active": 1,
"user": {
"firstname": “jack”,
"lastname": “m”
}
},etc,...
]
}

我的可编码伙伴

struct Welcome: Codable {
let status: Int
let userList: [UserList]

enum CodingKeys: String, CodingKey {
case status
case userList = "user_list"
}
}

struct UserList: Codable {
let userID: String
let permission, active: Int
let user: User

enum CodingKeys: String, CodingKey {
case userID = "user_id"
case permission, active, user
}
}

struct User: Codable {
let firstname, lastname: String
}

最佳答案

首先,我会将您的 UserList 模型重命名为 User 并将 User 重命名为 Name(并将其重命名为property just to name ... 然后你可以重命名 Name 的属性)

struct Welcome: Codable { // you can avoid using `CodingKeys` here since you can
let status: Int // set `keyDecodingStrategy` of decoder which does work
let userList: [User] // for you
}

struct User: Codable {
let userId: String
let permission, active: Int
let name: Name

enum CodingKeys: String, CodingKey {
case name = "user"
case permission, active, userId
}
}

struct Name: Codable {
let first, last: String
}

然后我认为在你的情况下,你的 UITableView 数据源数组应该只包含用户,所以......你的 User 模型。

var users = [User]()

然后您可以将此数组指定为解码响应的 userList 属性

do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let decoded = try decoder.decode(Welcome.self, from: someData)
self.users = decoded.userList
} catch { print(error) }

现在,对于 UITableView 数据源方法,确定行数使用用户数

func numberOfSections(in tableView: UITableView) -> Int {
return users.count
}

并为 cellForRowAt 使用特定用户

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
let user = users[indexPath.row]
// e.g. let firstname = user.name.first
...
}

关于ios - 如何使用 Swift 4.2 将具有可编码结构的 JSON 响应加载到 TableView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54769299/

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