Ниже приведен мой код. Здесь работает функция печати (валюты). Это означает, что извлекаются данные json. Но не отображается в таблице.Загрузка данных JSON в таблицу не работает
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var TableData:Array<String> = Array <String>()
override func viewDidLoad()
{
super.viewDidLoad()
get_data_from_url("http://api.fixer.io/latest")
}
Tableview часть
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return(TableData.count)
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
cell.textLabel?.text = TableData[indexPath.row]
return (cell)
}
JSON данные извлечение
func get_data_from_url(_ link:String)
{
let url = URL(string: "http://api.fixer.io/latest")
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil
{
print ("ERROR")
}
else
{
if let content = data
{
do
{
//Array
let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
if let rates = myJson["rates"] as? NSDictionary
{
if let currency = rates["NOK"] as? String
{
print(currency)
self.TableData.append(currency)
self.tableView.reloadData()
}
}
}
catch
{
}
}
}
}
task.resume()
}
Данные, показывающий в Xcode с функцией печати. Поэтому ясно, что данные извлекаются. Но проблема заключается в загрузке данных в таблицу.
Пожалуйста, помогите мне его загрузить.
Удалить 'public' из методов Tableview Также проверьте ваш' 'tableView' delegate' и 'dataSourece' правильно связаны с вашим viewController. –
Снова это не работает @NiravD – Rash
Обновить таблицуView в основном потоке, например 'DispatchQueue.main.async {self.tableView.reloadData()}' –