我当前的项目有问题。首先,我喜欢实现一个JSON
API请求,该请求使我可以从URL获得标题。问题:我想将JSON
数据显示到UITableViewCell
中。
但是Xcode
会引发以下错误:
无法分配类型为“ FirstViewController.Title”的值来键入 “字符串?”
也许我的代码中有更多错误,因为我只是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
中。
也许您可以告诉我我尝试过的方法是否错误,但是我真的不知道如何解决这个问题
提前谢谢
答案 0 :(得分:-1)
在重新加载之前分配变量
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)