Отображение в виде таблицы json api в Swift - PullRequest
0 голосов
/ 04 июня 2019

Вы хотите появиться в представлении таблицы json api.Но я не знаю как.

import Foundation

class MovieAPI {

    enum Endpoint {
        static let base = "http://connect-boxoffice.run.goorm.io"

        case listOrder(Int)

        var url: URL {
            return URL(string: self.stringValue)!
        }

        var stringValue: String {
            switch self {

            case .listOrder(let orderType): return Endpoint.base + "/movies?order_type=\(orderType)"
            }
        }
    }

    class func requestListOrder(listOrder: Int, completionHandler: @escaping (ListOrder?, Error?) -> Void) {
        let listOrderEndpoint = MovieAPI.Endpoint.listOrder(listOrder).url
        let task = URLSession.shared.dataTask(with: listOrderEndpoint) { (data, response, error) in
            guard let data = data else {
                completionHandler(nil, error)
                return
            }

            let decoder = JSONDecoder()
            let movieData = try! decoder.decode(ListOrder.self, from: data)
            print(movieData)
            completionHandler(movieData, nil)
        }
        task.resume()
    }
}

Когда я вижу печать (movieData), выводится список фильмов, и я хочу отобразить этот список в виде таблицы.

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Вызовите функцию класса requestListOrder, она даст вам завершение со списком фильмов и присвоит его переменной. Перезагрузить просмотр таблицы после того, как значение установлено в переменную по ее вычисленному свойству, т.е. didSet.

class ViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!

    var movieList = [Movie]() {
    didSet {
          tableView.reloadData()
       }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        MovieAPI.requestListOrder(listOrder: 1) { (movieList, error) in
           if let error = error {
               //handle your error here
               return //this restricts your code below to execute
           }
        self.movieList = movieList.data
      }
   }
}

extension ViewController: UITableViewDataSource {


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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! YourCell
    cell.yourdata = movieList[indexPath.row]
    return cell
}

}
0 голосов
/ 04 июня 2019

Вызовите метод requestListOrder, он даст вам завершение с помощью listorder, перезагрузите просмотр таблицы после того, как завершение будет успешным.Вам просто нужно передать массив данных listorder методу источника данных tableview и перезагрузить tableview

extension MyViewController:UITableViewDataSource{


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return listorder.data.count ?? 0
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! YourCell
    cell.yourdata = listorder.data[indexpath.row]
    return cell
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...