无法在数据中加载JSON数据'排列

时间:2018-06-08 15:50:12

标签: swift alamofire swifty-json

当我将此函数称为数组'数据'显示空方括号,但它并没有给我任何错误 这是代码: -

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 :(得分:0)

试试这个。 更改您的网址,方法是&#34;获取&#34;和你的地图模型。

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]())
        })
}

答案 1 :(得分:-1)

为什么每次循环迭代重新加载Table,而使用循环使用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))")
                }

        }
    }
}