Hallo,
ein Problem, mit dem ich mich schon lange herumschlage und immer wieder durch "Frickelei" temporär löse:
Man nehme eine Entität Kunde - die Kunden werden in einer TableView angezeigt. Der User soll durch Drag & Drop innerhalb der Tabelle die Reihenfolge der Kunden in der TableView ändern können. Die Reihenfolge soll nach einem Neustart der Anwendung erhalten bleiben. Klickt der User auf eine der TableViewColumns um den Inhalt der TableView anders zu sortieren, so soll dies ebenfalls möglich sein und diese Information soll nach einem Neustart der Anwendung ebenfalls nicht verloren gehen.
Puh - ganz schön viele Anforderungen
Meine bisherigen Ansätze: Jeder Kunde hat ein Attribut (ich nenne es meist index) vom Typ Int. Wird ein neuer Kunde erzeugt schaut er in seiner awakeFromInsert Methode nach dem größten bisher vergebenen Index - addiert dazu 1 und tada - dies ist der Index für den neuen Kunden. Beim Ändern der Reihenfolde durch D&D muss man allerdings den Index aller Kunden ändern: diese Lösung skaliert schlecht, wobei ich Tests mit 10.000 Kunden gemacht habe und keine Verzögerung feststellen konnte.
Nachteil: Angenommen es gibt noch eine Entität "Firma", die viele Kunden hat und man möchte nun die Kunden zweier Firmen in der TableView anzeigen: dann stimmen die Indexes nicht.
Aus diesem Grunde scheint mir das eine unglückliche Lösung zu sein.
Da muss es doch was intelligentes geben - oder?
ein Problem, mit dem ich mich schon lange herumschlage und immer wieder durch "Frickelei" temporär löse:
Man nehme eine Entität Kunde - die Kunden werden in einer TableView angezeigt. Der User soll durch Drag & Drop innerhalb der Tabelle die Reihenfolge der Kunden in der TableView ändern können. Die Reihenfolge soll nach einem Neustart der Anwendung erhalten bleiben. Klickt der User auf eine der TableViewColumns um den Inhalt der TableView anders zu sortieren, so soll dies ebenfalls möglich sein und diese Information soll nach einem Neustart der Anwendung ebenfalls nicht verloren gehen.
Puh - ganz schön viele Anforderungen

Meine bisherigen Ansätze: Jeder Kunde hat ein Attribut (ich nenne es meist index) vom Typ Int. Wird ein neuer Kunde erzeugt schaut er in seiner awakeFromInsert Methode nach dem größten bisher vergebenen Index - addiert dazu 1 und tada - dies ist der Index für den neuen Kunden. Beim Ändern der Reihenfolde durch D&D muss man allerdings den Index aller Kunden ändern: diese Lösung skaliert schlecht, wobei ich Tests mit 10.000 Kunden gemacht habe und keine Verzögerung feststellen konnte.
Nachteil: Angenommen es gibt noch eine Entität "Firma", die viele Kunden hat und man möchte nun die Kunden zweier Firmen in der TableView anzeigen: dann stimmen die Indexes nicht.
Aus diesem Grunde scheint mir das eine unglückliche Lösung zu sein.
Da muss es doch was intelligentes geben - oder?
Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].
