Ich versuche, die Daten von func getCoinData auf ein Array sympolsCoin und Array sympolsCoin zu speichernSwift 4 Speichern von Daten von json zu einem Array zu zeigen, in einer Tabellen-
in meinem Tableview verwendenIch schaffe diese Klasse in die gleiche ViewController.swift Datei:
struct Coin: Decodable {
let symbol : String
let price_usd : String }
Und dies in meiner Ansicht Controller-Klasse:
var coins = [Coin]()
var sympolsCoin = [String]()
var priceUSDcoin = [String]()
func getCoinData(completion: @escaping() ->()) {
let jsonURL = "https://api.coinmarketcap.com/v1/ticker/"
let url = URL(string: jsonURL)
URLSession.shared.dataTask(with: url!) { (data, response, error) in
do {
self.coins = try JSONDecoder().decode([Coin].self, from: data!)
for info in self.coins {
self.sympolsCoin.append(info.symbol)
self.priceUSDcoin.append(info.price_usd)
print("\(self.sympolsCoin) : \(self.priceUSDcoin)")
completion()
}
}
catch {
print("Error is : \n\(error)")
}
}.resume()
}
Und wenn ich das Array in meinem Tableview verwende ich bekam leere Tabelle!
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "BitcoinTableViewCell", for: indexPath) as! BitcoinTableViewCell
cell.coinNameLable.text = sympolsCoin[indexPath.row]
cell.priceLable.text = priceUSDcoin[indexPath.row]
return cell
}
Ich habe ein kleines Problem. .wenn die App nichts in der Tabellenansicht anzeigt, bis ich nach unten oder oben scrolle, dann zeigen die Daten! – cs4alhaider
bitte warten i auf Ihre Frage wird Arbeits –
gehen Sie zu Ihrem getCoinData() ersetzen "self.tableView.reloadData()" mit DispatchQueue.main.async { self.tableView.reloadData() } –