• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

NSOutlineView & CoreData

MacEmmi

Cox Orange
Registriert
20.08.07
Beiträge
97
Hallo,

ich habe folgendes Problem:
am liebsten würde ich den Expanded-Status der einzelnen Items im OutlineView speichern und beim nächsten Aufruf des Programms nochmal herstellen. Leider funktioniert das mit Standardmitteln nicht, wenn man CoreData verwendet. Ich hab auch schon nach einer Lösung gesucht - das Problem ist bekannt; eine gute Lösung hab ich aber nicht gefunden. Weiß jemand wie's geht?

Alternativ hab ich mir überlegt am Anfang einfach alle Items zu expandieren. Die Frage ist nur: wann? Im awakeFromNib ist der OutlineView noch leer. Genauso in windowDidUpdate etc. etc.
Gibt es einen Zeitpunkt zu dem man weiß, dass alles Views im Window mit dem Zeichnen fertig sind?

Bin ziemlich ratlos...:-!
 
Hallo,

ich habe folgendes Problem:
am liebsten würde ich den Expanded-Status der einzelnen Items im OutlineView speichern und beim nächsten Aufruf des Programms nochmal herstellen. Leider funktioniert das mit Standardmitteln nicht, wenn man CoreData verwendet. Ich hab auch schon nach einer Lösung gesucht - das Problem ist bekannt; eine gute Lösung hab ich aber nicht gefunden. Weiß jemand wie's geht?
Wenn es eine doucment-based Application (DBA) ist, würde ich dein Document-Bundle machen und das dort hinterlegen.

Ist es en non-DBA, kommt es halt als Datei in den Application Support.

Alternativ hab ich mir überlegt am Anfang einfach alle Items zu expandieren. Die Frage ist nur: wann? Im awakeFromNib ist der OutlineView noch leer. Genauso in windowDidUpdate etc. etc.
Gibt es einen Zeitpunkt zu dem man weiß, dass alles Views im Window mit dem Zeichnen fertig sind?

Bin ziemlich ratlos...:-!
IIRC werden die Zugriffe des Table-Views auf das CD.Model verzögert. Das Problem is auch irgendwo in der Doku beschrieben. Abe bitte frag' mich nicht wo. *g*

Du solltest vielleicht an eine Subclass des Outline-Views denken und dort auf einen Methodenaufruf warten. Zu Verstehenszwecken empfiehlt es ich hier, einfach di Kandidaten zu überschreiben und nach einem Log die Methode des Super aufzurufen. So bekommt man eine Einsicht in die zeitlichen Abläufe.
 
Leider funktioniert das mit Standardmitteln nicht, wenn man CoreData verwendet.
Sei froh. Die eingebaute Auklapp-Merkfunktion hat einen ziemlich weichen Keks, was auch bei Nicht-CoreData-Programmen oftmals zu Eigenbau-Loesungen fuehrt. Und da sprech' ich nicht nur aus eigener Doofheit Erfahrung, sondern berichte auch von Erfahrungen anderer, mit denen ich mich darueber unterhalten hab'.

Meine Standardloesung fuer dieses Problem, ganz CoreData-unspezifisch, ist jedenfalls aehnlich wie Amins: Ich merke mir den Klappzustand in einer externen Liste eindeutiger Kennzeichnungen (z.B. UUIDs). Ob man das dann mit den Daten oder mit den Programmeinstellungen sichert, das ist allerdings schon fast eine religioese Frage. :D
 
Zitat von MacApple
Hier klicken.

Jo danke, hatte ich inzwischen per Zufall auch schon gefunden. Ich merk mir die Zustände auch in einer Liste in den UserDefaults.

Eine Sache finde ich allerdings merkwürdig und frage mich, ob man das irgendwie abstellen/kontrollieren kann:
Wenn man im OutlineView ein Item aufklappt, ändert sich die Breite der ersten Spalte (wird größer). Das muss man dann jedesmal von Hand wieder korrigieren. Ich hab bisher nichts gefunden, wo man das abstellen kann...
 
[NSOutlineView setAutoresizesOutlineColumn:]

Merke: Die Apple-eigene Cocoa-Dokumentation ist gar nicht so schlecht. Es steht so manches drin, und es lohnt sich, sie mal von vorne bis hinten zu lesen. Dann kann man sich zwar nur wenig merken, aber man gewinnt ein Gefuehl dafuer, wo man nachschauen muss. :)
 
Merke: Die Apple-eigene Cocoa-Dokumentation ist gar nicht so schlecht. Es steht so manches drin, und es lohnt sich, sie mal von vorne bis hinten zu lesen.
Jo, wer lesen kann ist klar im Vorteil. Keine Ahnung warum ich das gerade überlesen habe. Die Cocoa Doku von vorne bis hinten durchlesen wäre sicher interessant, zeitlich aber kaum machbar. Vielleicht im Sommer wieder, abends im Garten bei einem schönen Pils...