Eigentlich muss ich Daten auf meinem TableView setzen, die Strings, die ich bekomme, sind auf eine Funktion, die eine POST-Anfrage auf einem WebService macht.Setzen Sie Werte auf TableView Swift 3 auf Funktion
override func viewDidLoad() {
names.append("Data 1")
names.append("Data 2")
names.append("Data 3")
self.request()
MyTable.delegate = self
MyTable.dataSource = self
super.viewDidLoad()
}
Auf self.request()
Funktion habe ich eine Post-Anforderung, die gut funktioniert:
func request(){
let parameters: Parameters = [
"action": "*",
"key":"*": "*"
]
Alamofire.request("my_url", method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON { response in
switch response.result {
case .success(let JSON):
print("Validation Successful")
print(response.result.value)
let response = JSON as! NSDictionary
let userId = response.object(forKey: "Data")!
let data = userId as! NSArray
for item in data { // loop through data items
let obj = item as! NSDictionary
print("Obj: \"\(obj["KeyName"] as! String)\"")
self.names.append(obj["KeyName"] as! String)
}
print(userId)
case .failure(let error):
print(error)
}
}
}
Der erste Teil funktioniert gut:
names.append("imac")
names.append("Macbook")
names.append("iphon")
Und print("Obj: \"\(obj["KeyName"] as! String)\"")
zeigt mir auf der Konsole die Saiten, aber wenn ich es auf dem TableView setze, zeigt self.names.append(obj["KeyName"] as! String)
die Daten nicht nur den ersten Teil, mache ich etwas falsch?
Ich denke, das ist, weil es asynchron ist. Also müssen Sie 'MyTable.reloadData()' tun, sobald Sie die neuen Namen erhalten. Vermeiden Sie auch die Benennung von var beginnend mit einem Großbuchstaben (wie 'MyTable' =>' myTable'). – Larme
Danke das war das Problem, Grüße. –