我能';t使用Swift JSON打印到TableView数据
我对使用JSON还不熟悉,我想从一个简单的应用程序开始,提供电影的概述。下面的代码不会在tableView上打印任何内容,应用程序仍然为空,没有结果。他不犯错误。但是,在调试区域,数据会将它们打印给我。如何在tableView上获得结果 ViewController.swift我能';t使用Swift JSON打印到TableView数据,json,swift,xcode,Json,Swift,Xcode,我对使用JSON还不熟悉,我想从一个简单的应用程序开始,提供电影的概述。下面的代码不会在tableView上打印任何内容,应用程序仍然为空,没有结果。他不犯错误。但是,在调试区域,数据会将它们打印给我。如何在tableView上获得结果 ViewController.swift import UIKit class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { var p
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var popularMoviesArray = [Results]()
var swiftManager = SwiftManager()
var tableViewCell = TableViewCell()
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var labelError: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
swiftManager.delegate = self
swiftManager.fetchUrl()
self.tableView.reloadData()
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return popularMoviesArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
let item = popularMoviesArray[indexPath.row]
cell.labelTitle.text = item.title
cell.labelYear.text = item.release_date
cell.labelRate.text = String(item.vote_average ?? 0.0)
cell.labelOreview.text = item.overview
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "goToDetail", sender: indexPath.row)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier != nil else {
return
}
let letRow = sender as? Int
switch segue.identifier {
case "goToDetail":
(segue.destination as! ViewControllerDetail).itemDetail = popularMoviesArray[letRow!]
default:
return
}
}
}
extension ViewController: SwiftManagerDelegate {
func didUpdateStruct(_ swiftManager: SwiftManager, swiftData: SwiftData) {
DispatchQueue.main.async {
self.popularMoviesArray = swiftData.results
print("PRINT ARRAY - \(self.popularMoviesArray)")
}
}
func didFailWithError(error: Error) {
print(error)
}
}
您必须在委托方法中重新加载表视图,因为数据是异步加载的
func didUpdateStruct(_ swiftManager: SwiftManager, swiftData: SwiftData) {
DispatchQueue.main.async {
self.popularMoviesArray = swiftData.results
self.tableView.reloadData()
print("PRINT ARRAY - \(self.popularMoviesArray)")
}
}
在
viewDidLoad
中重新加载表视图毫无意义。必须在委托方法中重新加载表视图,因为数据是异步加载的
func didUpdateStruct(_ swiftManager: SwiftManager, swiftData: SwiftData) {
DispatchQueue.main.async {
self.popularMoviesArray = swiftData.results
self.tableView.reloadData()
print("PRINT ARRAY - \(self.popularMoviesArray)")
}
}
在
viewDidLoad
中重新加载表视图毫无意义。我简直不敢相信!这是唯一的问题,现在它工作了!非常感谢。我疯狂了好几天:-)我简直不敢相信!这是唯一的问题,现在它工作了!非常感谢。我疯狂了好几天:-)