Ich habe 2 grundlegende Methoden - viewDidLoad
und viewDidAppear
. Gemäß meiner App-Philosophie ruft der View-Controller beim Laden von Daten Daten von der Basis ab und beginnt sie mit einigen Prädikaten zu sortieren. Der Abholvorgang ist lang, also habe ich ihn in die globale Warteschlange geschickt. Wenn meine Ansicht erscheint, erhält sie offensichtlich nicht den Wert von array (der in load-Methode kompiliert wird) und stürzt ab. Also muss ich viewDidAppear
warten, bis mindestens ein Objekt an Array angehängt wird. Art von Semaphoren oder Temp-Werten? Vielen Dank im Voraus!Einfaches Warten auf Wert aus asynchronem Thread
P.S. Jedes Element in einem Array repräsentiert eine Struktur mit Daten, die eine Benutzeroberfläche bilden. Der Benutzer interagiert mit dieser Benutzerschnittstelle, daher muss er einmal mit dem ersten Element aus dem Array geladen werden. Um zum nächsten Element zu wechseln, klickt der Benutzer einfach auf "Weiter" und die Benutzeroberfläche ändert sich entsprechend dem nächsten Element aus dem Array. Deshalb möchte ich, dass die Daten im Hintergrund abgerufen werden und der Benutzer sofort arbeiten kann. (Es ist unmöglich, am 5., 10. oder 1001. Elemente zu springen sofort, es wird genügend Zeit sein, um Daten zu holen, bevor Benutzer auf diesen Seitenzahlen bekommen)
PPS Noch keine richtige Entscheidung :(
Tell, nicht fragen Verwenden eines asynchronen Abschluss Block und stellen die Daten-Array/Neuladen der Tabellen-Ansicht in der Fertigblock – vadian
@vadian Leider wird es „einzufrieren“ Schnittstelle mit.. lange "Fortschrittsbalken" Laden. –
Ihre Benutzeroberfläche sollte nicht von der abgerufenen Data abhängen. Stellen Sie sich vor, dass das Internet c Eine Verbindung ist nicht verfügbar. Ihre Benutzeroberfläche sollte auch in diesem Fall reagieren. Zeige Platzhalter oder leere Daten, bis die echten Daten verfügbar sind. – user3441734