Ich versuche, Daten aus einem API zu extrahieren, um meine Tabelle aufzufüllen, aber es wird nichts angezeigt. Wie kann ich es reparieren?REST-API: Tabelle kann nicht ausgefüllt werden
AKTUALISIERT Wenn ich die GET-Anforderung entweder in viewDidLoad() oder viewDidAppear() Ich würde
Ergebnis GET ein leeres Array erhalten wird []
I haben versucht Hinzufügen von self.tableView.reload() zur viewDidLoad() aber würde diesen Fehler geworfen werden
Mehrdeutige Referenz an das Mitglied 'Tableview (_: numberOfRowsInSection :)
Dies ist meine JSON-Antwort
[
{
"schedule_job_id": 23,
"start_date": "2016-05-01",
"end_date": "2016-05-08",
"building_id": 2,
"building_name": "Republic Plaza",
"building_block_no": "69A",
"building_street_name": "9 Raffles Place Downtown Core",
"building_postal_code": "233645",
"checklist_id": "1",
"checklist_name": "Lightning protection",
"checklist_due_date": "2016-04-12 17:00:00",
"tasks": [
{
"submission_id": 105,
"task_id": "1",
"task_name": "Inspect Carpark",
"task_checked": true,
"task_submitted_date": "2016-05-04 04:39:01",
"task_comment": null,
"task_building_level": "1",
"task_description": "",
"task_status": "OK",
"total_rating": null,
"safety_ratings": [
{
"submission_id": 105,
"safety_rating_id": 79,
"task_id": "1",
"name": "Equipment",
"points": "10",
"score": "0"
}
],
"photos": []
}
]
Das ist mein GET-Anfrage
override func viewDidLoad() {
usernameLabel.text = Data.sharedInstance.userName
let url = "http://anyapi.com"
Alamofire.request(.GET, url).validate().responseJSON { response in
switch response.result {
case .Success(let data):
let json = JSON(data)
if let data = json["task_name"].arrayValue as [JSON]?{
self.datas = data
self.displayTask.reloadData()
print("result of GET is \(self.datas)")
}
case .Failure(let error):
print("Request failed with error: \(error)")
}
}
}
Der gesamte Tableview Code gesehen hier https://codeshare.io/aKknb werden kann, ist
Hi @Brett Ich habe meinen Code in viewDidLoad() verschoben, aber es füllt immer noch nicht – noobdev
Was wird von Ihren Druckanweisungen in Ihr Protokoll gedruckt? –
Denken Sie daran, dass die Ansichten in viewDidLoad noch nicht sichtbar sind. Natürlich können sie * zu dem Zeitpunkt vorhanden sein, zu dem Ihre asynchrone Serveranfrage zurückkommt, aber möglicherweise nicht. Es könnte also ein Timing-Problem sein. Sie können den Code in viewDidAppear verschieben, um dies zu überprüfen. –