2016-05-31 7 views
0

Ich habe eine UITableViewController-Instanz, die die Datenquelle und der Delegat ist.In welcher Funktion zum Laden von TableView-Daten, wenn die Daten von Remote-API stammen

Die Daten werden von einer Remote-API bereitgestellt, deren Aufruf einige Zeit in Anspruch nimmt.

Ich weiß, wie die Zellen sicher aufrufen und auffüllen, aber ich weiß nicht, in welcher Funktion ich die API aufrufen muss, die die Daten lädt.

Typischerweise habe ich so etwas wie

var myData : [myOption]? 

und wenn ich die Zellen zu füllen, kann ich fragen, ob das Array gleich Null ist oder nicht, und wenn nicht ich die API aufrufen können, ist dies ein guter Weg?

+2

Normalerweise würden Sie den Ladevorgang in 'viewDidLoad' initiieren und dann die Tabelle aktualisieren, sobald der Ladevorgang abgeschlossen ist. – Paulw11

+0

@ Paulw11 Ich werde es einen Versuch geben danke – sarah

Antwort

0

Normalerweise möchten Sie Ihre Daten aus dem View-Controller heraushalten, und Sie möchten Ihre API-Aufrufe unbedingt aus dem View-Controller heraushalten. Erstellen Sie ein "Modell" -Objekt, das mit der API kommuniziert. Der einfachste Weg dazu ist, das Modell zu shared singleton zu machen. (Es gibt einige Gründe, Singletons hier nicht zu verwenden, aber wenn Sie neu sind, würde ich es absolut so machen.)

Um die Dinge einfach zu halten, empfehle ich, NSNotification zu verwenden, um das Modell ankündigen zu lassen, wenn Daten vorhanden sind geändert. Der View-Controller beobachtet diese Benachrichtigung und ruft bei der Veröffentlichung reloadData auf, um sich selbst zu aktualisieren. Alle Datenquellenmethoden (numberOfRowsInSection, usw.) sind einfache Aufrufe an das Modell.

Dies ist die traditionelle Art und Weise, Cocoa-Apps zu erstellen, und die Art, wie ich Menschen den Start empfehle. Wenn Sie mehr erfahren, werden Sie wahrscheinlich andere Tools finden, die besser als NSNotification sein können, und Sie können andere Muster lernen, die Singletons ersetzen. Und Sie werden definitiv lernen bessere Möglichkeiten, Ihre Tabelle als reloadData zu aktualisieren, aber das wird Ihnen eine gute, starke Grundlage zu verbessern.

Einer der besseren Beispielcode, IMO, der das alles zeigt, ist The Elements. Ich empfehle sehr, es zu studieren. Es ist in ObjC, aber es ist sehr klar geschrieben, und das Lernen, ObjC zu Swift zu konvertieren, ist eine Kernkompetenz von Cocoa-Entwicklern. (Die Elemente sprechen nicht mit einem Server, aber sie zeigen das von Ihnen benötigte Model View Controller-Muster.)

Verwandte Themen