如何从第三级结构中读取变量?

时间:2017-12-29 17:27:22

标签: swift struct tableview

我知道如何访问“struct Course”变量并将它们带到tableview。我是这样做的:

var event = [Course]()
//some code left out
let courses = try JSONDecoder().decode(JsonFromWeb.self, from: data)
self.event = courses.data
//some code left out

然后在tableView中:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "eventCell") as? UserEventsTableViewCell else { return UITableViewCell() }
        cell.idLabel.text = event[indexPath.row].id
        cell.nameLabel.text = event[indexPath.row].name
        return cell
    }

但我无法弄清楚访问Cover变量的方法并获取示例源值并将其添加到tableView。就像我对课程变量一样。 我的结构在这里:(对使用我的JSON编码的用户Vadian的信用。)

struct JsonFromWeb: Codable {
    let data: [Course]
}

struct Course: Codable {

    private enum CodingKeys : String, CodingKey {
        case attendingCount = "attending_count"
        case id, name, cover
    }
    let id: String
    let name: String
    let attendingCount: Int
    let cover: Cover?
}

struct Cover : Codable {

    private enum CodingKeys : String, CodingKey {
        case offsetX = "offset_x"
        case offsetY = "offset_y"
        case source, id
    }
    let offsetX: Int
    let offsetY: Int
    let source: String
    let id: String
}

希望能找到帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

这很简单:

要访问source中的cover,请使用

event[indexPath.row].cover?.source