Frage

Gibt es einen besseren Weg, als das, was hier vorgeschlagen, eine eins-zu-eins-Abbildung zwischen einer Tabellenansicht Zelle NSIndexPath und einem einzigartigen NSUInteger oder int zu schaffen, um einen einzigartigen tag Eigenschaftswert für ein Widget in der Zelle zu erstellen (a UIProgressView)?

Der Link fügt Methoden durch eine UIKit Kategorie-Erweiterung, die zwischen NSIndexPath und int konvertiert, aber sie nur für weniger Arbeit als eine bestimmte Anzahl von Zeilen.

Zugegeben, kann ich nicht in diese Grenze laufen, aber ich frage mich, ob es eine Abbildung ist, dass jemand mit, dass für eine beliebige Anzahl von Zeilen arbeiten garantiert kann gekommen ist werden.

War es hilfreich?

Lösung

Nein, es ist nicht wirklich eine Art und Weise, die garantiert für eine beliebige Anzahl von Zeilen zu arbeiten. Wenn Sie eine Tabelle mit zwei Abschnitten, die jeweils mit 3 Milliarden Zeilen, dann gibt es keine Möglichkeit, diese 6 Milliarden Potenzial NSIndexPaths in die 4 Mrd. 32-Bit-NSIntegers abzubilden.

(wenn Sie ein 64-Bit-App erstellt wird, die gleiche Sache ist wahr, aber die Zahlen würden weitere 4 Milliarden Mal größer im Beispiel sein müssen.)

Sie verwenden eine Grenze von 10.000 Zeilen pro Abschnitt im Beispiel Sie verknüpfen; wenn Sie ernsthaft besorgt sind, könnten Sie mehr Zeilen als das haben, könnten Sie eine größere Konstante verwenden, das heißt Sie 1.000.000 als die maximale Anzahl von Zeilen verwenden können, wenn Sie wissen, dass Sie nicht mehr als 4.000 Abschnitte haben.

Beachten Sie, dass ein „echter Programmierer“ vermutlich 65536 als Konstante, natürlich verwenden würde.

Andere Tipps

Wenn ich eine Notwendigkeit, dies zu tun, würde ich einfach den Abschnitt Pfad verschieben, um eine Hälfte eines 32-Bit-int, und verschieben Sie die Zeile Teil zum anderen. Ja, das bedeutet, dass Sie nicht mehr als 65.535 Elemente in einer Reihe haben kann (darin Ausbrechen ich unsigned ints angenommen, da Zeile / Abschnitt wird nie negativ sein), aber ich werde eine angenommene Grenze nehmen weit größer, als ich jemals brauchen werden, über ein magischer konstante jeden Tag möglich.

Außerdem ist es billige rechen.

In der Regel in dieser Situation, obwohl ich meinen Tabelle View-Controller als Delegierter für jede Zelle, und die Zelle einrichten kann zusammen mit einigem Schlüsselwert mit Änderungen die Steuerung zurückrufen verwendet, um die Zelle zu schaffen - schließlich, wenn Sie bevölkern eine Zelle, die Sie wissen, wie in Ihre Daten ziehen Werte zu erreichen. Heck, Sie könnte sogar einfach speichern die IndexPath in die Zelle, und es kann mit dem zurückrufen. Der Grund, warum ich nicht die IndexPath Ansatz oder die vor einer Verwendung würde NSIndexPath in ein Tag beteiligt Abflachung ist, dass, wenn Sie jemals Reihen beginnen dynamisch ändern sich die Werte zwischen dem NSndexPath erstellt man eine Zelle mit und den Wert für den aktuellen Datensatz nicht ausgerichtet werden könnte. Viel besser eine Art Schlüssel zu haben, die Sie immer wieder zurück auf die richtigen Daten logisch bekommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top