Auch wenn es schon spät ist:
Meine Dokumentenklasse enthält ein NSDictionary. Dessen Inhalt möchte ich ein einem NSTableView und in einem NSPopupButton darstellen.
Ich habe mir gedacht, eine Subklasse von NSArrayController zu erstellen, die aus dem NSDictionary eine NSArray macht (geht ja ganz einfach mit [dict allValues]).
Nun zur Strategie: Im IB den eigenen ArrayController instanziieren und "contentArray" mit dem NSDictionary des Documents verbinden. Da "contentArray" eigentlich mit einem NSArray-Object gebunden sein soll (und nicht mit meinem NSDictionary), kann diese KVO-Verbindung nur zum Benachrichtigen von Änderungen benutzt werden.
Um erstmal simpel anzufangen habe ich "arrangedObjects" in meiner NSArrayController-Klasse überschrieben:
(der ArrayController besitzt eine Methode "document")
Leider funkltioniert es nicht, denn nachdem diese Methode aufgerufen wurden, erscheint eine Fehlermeldung, dass aus einem Dictionary kein Array erstellt werden kann. Es scheint also von woanders aus auf das Model des Controllers zugegriffen zu werden.
Die Frage lautet also: Wie implementiert man einen ArrayController für ein NSDictionary?
Vielen Dank für Anregungen im Voraus,
Tjark
Update: Es funktioniert nur, wenn ich im IB als "Model Key Path" (dieser gibt ja das NSDictionary an) "allValues" anhänge, so dass der ArrayController gleich mit einem NSArray-Objekt versorgt wird. Funktioniert dann KVO bzgl. Änderungen am Dictionary noch?
Meine Dokumentenklasse enthält ein NSDictionary. Dessen Inhalt möchte ich ein einem NSTableView und in einem NSPopupButton darstellen.
Ich habe mir gedacht, eine Subklasse von NSArrayController zu erstellen, die aus dem NSDictionary eine NSArray macht (geht ja ganz einfach mit [dict allValues]).
Nun zur Strategie: Im IB den eigenen ArrayController instanziieren und "contentArray" mit dem NSDictionary des Documents verbinden. Da "contentArray" eigentlich mit einem NSArray-Object gebunden sein soll (und nicht mit meinem NSDictionary), kann diese KVO-Verbindung nur zum Benachrichtigen von Änderungen benutzt werden.
Um erstmal simpel anzufangen habe ich "arrangedObjects" in meiner NSArrayController-Klasse überschrieben:
Leider funkltioniert es nicht, denn nachdem diese Methode aufgerufen wurden, erscheint eine Fehlermeldung, dass aus einem Dictionary kein Array erstellt werden kann. Es scheint also von woanders aus auf das Model des Controllers zugegriffen zu werden.
Die Frage lautet also: Wie implementiert man einen ArrayController für ein NSDictionary?
Vielen Dank für Anregungen im Voraus,
Tjark
Update: Es funktioniert nur, wenn ich im IB als "Model Key Path" (dieser gibt ja das NSDictionary an) "allValues" anhänge, so dass der ArrayController gleich mit einem NSArray-Objekt versorgt wird. Funktioniert dann KVO bzgl. Änderungen am Dictionary noch?

