我如何将我的 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)
我当前的项目有问题。首先,我想实现一个 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)