Kann ich NSFetchResultController
auf einer Apple Watch verwenden, um 80 bis 90 Datensätze in einer Tabelle anzuzeigen?
Ich verwende " WKInterfaceTable+IGInterfaceDataTable
", um Datenquellen vom Typ "Datenquelle" zu verwenden, weil mir das einfacher erscheint als NSArray
.
Wird NSFetchResultController
helfen, die Effizienz zu erhöhen, oder wird es langsamer?
Ich habe festgestellt, dass NSFetchResultController in der iWatch-App überhaupt nicht nützlich ist, weil WKInterfaceTable die Delegate-Methode zum Bearbeiten, Ändern oder Löschen für eine einzelne Zeile, die NSFetchResultController im Delegate unterstützt, nicht unterstützt. Sie müssen also alle Daten aktualisieren, die Sie jedes Mal anzeigen möchten, damit ich sie nicht verwenden kann.
Ich habe NSFetchedResultController
und WKInterfaceTable
für meine Apple Watch-Anwendung verwendet. Es ist wahr, dass es nicht so bequem wie ein UITableViewController
ist, aber es ist sehr machbar. Ich habe keine Performance-Probleme, auch nicht beim Laden von 20+ Zeilen (nicht 80-90). Natürlich ist das im Simulator, daher weiß ich nicht, wie sich die Geräte verhalten werden.
Einfügen, aktualisieren und löschen Sie müssen sich selbst implementieren, ist aber nicht so schwer.
Unten ein Teil meines Codes in der InterfaceController, mit Einfügen als Beispiel, aber Bearbeiten und Löschen ist nicht schwieriger:
Schnittstelle
%Vor%Implementierung
Das Abrufen ist das gleiche wie immer, nur dass wir dem resultcontroller keinen Delegaten zuweisen, sondern die Daten direkt speichern:
%Vor% Ich verwende dann eine Funktion loadTableData
:
Was configureRowControllerAtIndex
aufruft, eine Funktion, die eine Zeile auffüllt (ich habe zwei Labels):
Wenn Sie eine neue Zeile einfügen, fügen Sie sie einfach manuell in managedObjectContext
und im Datenarray hinzu:
und speichern Sie den managedObjectContext regelmäßig:
%Vor% Das NSFetchedResultsController
, das mit WKInterfaceTable
arbeitet, ist ein PITA. Hell, Mapping von einfachen Arrays / Wörterbüchern von Daten zu WKInterfaceTable
saugt. Wir haben eine einfache Bibliothek erstellt und geöffnet, um dies zu vereinfachen, indem wir die API zumindest so aussehen lassen wie UITableView
. Hatte nur Hilfe von außen, die Unterstützung für NSFetchedResultsController
hinzufügte. Hoffentlich kann das in Zukunft helfen!
Tags und Links objective-c ios nsfetchedresultscontroller apple-watch