Мне кажется, что я что-то упускаю, когда дело доходит до просмотра таблиц в Swift 4, или, может быть, я просто не передаю свои данные, как я должен ... Я читаю json, который должен сохранить в структуре "Рабочая область"и затем я использую эту же структуру для отображения данных в моем табличном представлении
У меня есть этот класс:
public class User {
var Wor = [Workspace]()
var WorData = Workspace()
}
И эта структура: функция getuserWorkspace должна обновлять значения структуры.
struct Workspace: Decodable {
var guid: String
var name: String
private enum CodingKeys : String, CodingKey {
case guid = "guid"
case name = "name"
}
init(){
self.guid = "guid"
self.name = "name"
}
mutating func getUserWorkspace(base: String, completed: @escaping () -> ()){
let url = URL(string: "SOME URL")!
var request = URLRequest(url: url)
request.addValue("Basic \(base)", forHTTPHeaderField: "Authorization")
request.addValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: request){ (data, response, error) in
if error == nil {
do {
let rep = try JSONDecoder().decode([Workspace].self, from: data!)
print(rep)
//it prints exactly what I receive so I guess I'm saving it well?
DispatchQueue.main.async {
completed()
}
}catch {
print(error)
}
}
}.resume()
}
И у меня есть это в моем контроллере представления:
var co = User()
override func viewDidLoad() {
super.viewDidLoad()
co.getBase()
co.WorData.getUserWorkspace(base: co.Base) {
print("success")
self.listView.reloadData()
self.updateVertically()
}
print("guid " + co.WorData.guid)
print("name " + co.WorData.name)
print("work ", co.WorData)
print("wor ", co.Wor)
listView.delegate = self
listView.dataSource = self
}
В строках таблицы я возвращаю co.Wor.count
И в строке ячейки co.Wor[indexPath.row].name
Но все пусто И отпечатки дают мне это:
guid guid
name name
work Workspace(guid: "guid", name: "name")
wor []
[Proj.Workspace(guid: "8a81b08e45467656fr467f51119047027", name: "test ok")]
(this print is inside the function in the structure)
success
Я действительно запутался в том, как решить проблему