我如何将我的 JSON API 请求实现到 UITableViewCell 中?

How i implement my JSON API Request into a UITableViewCell?

我当前的项目有问题。首先,我想实现一个 JSON API 请求,允许我从 URL 中获取标题。问题:我想将 JSON 数据显示为 UITableViewCell

但是 Xcode 抛出以下错误:

Cannot assign value of type 'FirstViewController.Title' to type 'String?'

也许我的代码有更多错误,因为我只是 Swift/Xcode

的初学者

我已经试过了:

cell.textLabel?.text = course.title as? String

但是我收到如下警告信息:

Cast from 'FirstViewController.Title' to unrelated type 'String' always fails

这是我的代码示例:

var courses = [Course]()
let cell = "ItemCell"

override func viewDidLoad() {
    super.viewDidLoad()

    fetchJSON()
}

struct Course: Codable {
    let title: Title

    enum CodingKeys: String, CodingKey {
        case title
        case links = "_links"
    }
}

struct Links: Codable {
}

struct Title: Codable {
    let rendered: String
}


fileprivate func fetchJSON() {
    let urlString = "ExampleURL"
    guard let url = URL(string: urlString) else { return }
    URLSession.shared.dataTask(with: url) { (data, _, err) in
        DispatchQueue.main.async {
            if let err = err {
                print("Failed to get data from url:", err)
                return
            }

            guard let data = data else { return }

            do {

                let result = try JSONDecoder().decode(Course.self, from: data)


                self.tableView.reloadData()
            } catch let jsonErr {
                print("Failed to decode:", jsonErr)
            }
        }
        }.resume()
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return courses.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: .value1, reuseIdentifier: "ItemCell")
    let course = courses[indexPath.row]
    cell.textLabel?.text = course.title as? String // Cast from 'FirstViewController.Title' to unrelated type 'String' always fails
    return cell
}

我只想将 WordPress 个帖子放入 UITableView - UITableViewCell

也许你可以告诉我我试过的方法是否错误,但我真的不知道如何解决这个问题

提前致谢

在重新加载之前分配变量

 let res = try JSONDecoder().decode(Course.self, from: data)
 courses.append(res)
 DispatchQueue.main.async {
     self.tableView.reloadData()
 }

并将其设置为字符串值

 cell.textLabel?.text = course.title.rendered

 courses = try JSONDecoder().decode([Course].self, from: data)
 print(courses)