невозможно загрузить данные JSON в массив данных - PullRequest
0 голосов
/ 08 июня 2018

когда я вызываю эту функцию, массив 'data' показывает пустые квадратные скобки, он не дает мне никаких ошибок, хотя вот код: -

import Foundation
import Alamofire
import SwiftyJSON

class Networking {

    var data = [Item]()

    let tVC = TableViewController()

    let url = "https://api.coinmarketcap.com/v1/ticker/"

    func getCoinData(url: String) {

        Alamofire.request(url, method: .get)
            .responseJSON { response in
                if response.result.isSuccess {

                    let coinJSON : JSON = JSON(response.result.value!)

                    for i in 0..<coinJSON.count{
                        let coinName = Item(bitJSON: coinJSON[i])
                        self.data.append(coinName)
                        self.tVC.tableView.reloadData()
                    }
                }
                else {
                    print("Error: \(String(describing: response.result.error))")
                }

        }
    }
}

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Попробуйте это.Измените ваш URL, метод «Получить» и модель отображения.

public static func getArrayInformation(completionHandler: @escaping (APIResponse) -> Void) {
    let url = "your url"
    let params: Parameters = ["username": "admin",
                             "password": "1234"]

    Alamofire.request(url,
                      method: .post,
                      parameters: params,
                      encoding: JSONEncoding.default,
                      headers: ["Content-Type": "application/json"])
        .responseDecodableObject(keyPath: nil, decoder: JSONDecoder(), completionHandler: { (handler: DataResponse<[Your Object Array]>) in
            completionHandler(handler.result.value ?? [Your Object Array]())
        })
}
0 голосов
/ 08 июня 2018

почему вы перезагружаете Table каждую итерацию цикла, и вместо этого Loop использует Map

class Networking {

    var data = [Item]()

    let tVC = TableViewController()

    let url = "https://api.coinmarketcap.com/v1/ticker/"

    func getCoinData(url: String) {

        Alamofire.request(url, method: .get)
            .responseJSON { response in
                if response.result.isSuccess {

                    let coinJSON : JSON = JSON(response.result.value!)

                   data =  coinJSON.map({ (coinJson) -> Item in
                        return Item(bitJSON: coinJson)
                    })


                    DispatchQueue.main.async {
                        self.tVC.tableView.reloadData()
                    }

                }
                else {
                    print("Error: \(String(describing: response.result.error))")
                }

        }
    }
}
...