【发布时间】:2021-11-15 16:53:04
【问题描述】:
我创建了一个 TableViewController 并添加了我的 Json 数据,但 TableView 没有显示。我的代码正在运行并且没有给出任何错误,调试器看起来也很好,但我看到的只是一个白屏。谁能告诉我我做错了什么?
导入 UIKit
类 HomeViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
public var meals = [Meal]()
override func viewDidLoad() {
self.tableView.delegate = self
self.tableView.dataSource = self
super.viewDidLoad()
fetchJSON {
self.tableView.reloadData()
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return meals.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .default , reuseIdentifier: nil)
cell.textLabel?.text = meals[indexPath.row].strMeal.capitalized
return cell
}
func fetchJSON(completed: @escaping () -> ()) {
let jsonUrlString = "https://www.themealdb.com/api/json/v1/1/filter.php?c=Beef"
guard let url = URL(string: jsonUrlString) else {
print("invalid url string lel")
return
}
print("Select a meal to make today!")
URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data else {
return
}
do {
let decoder = JSONDecoder()
let mealDetailResponse = try decoder.decode(MealDetailResponse.self, from: data)
for meals in mealDetailResponse.meals {
print("The Meal is \(meals.self)")
DispatchQueue.main.async {
completed()
}
}
}catch {
print(error)
}
}.resume()
}
}
【问题讨论】:
-
添加
self.meals = mealDetailResponse.meals并查看 -
我在哪里添加这个?
-
行后
let mealDetailResponse = .... -
这样? let decoder = JSONDecoder() let mealDetailResponse = try decoder.decode(MealDetailResponse.self, from: data) self.meals = mealDetailResponse.meals 我仍然没有得到任何我的餐桌列表餐
标签: swift xcode uikit tableview