2012-04-12 8 views
1

OK speichern, so dass ich ein klassisches Szenario Umsetzung:NSArrayController + NSTableView: Änderungen automatisch ohne Core Data

  • Ein NSPopupButton mit einigen Elementen in es
  • Wenn der ausgewählte Wert ändert, mein itemsArray aktualisiert Jedes Element in den itemsArray ist ein NSMutableDictionary (mit Tasten
  • die itemsArray wird eine NSArrayController
  • verbunden: title, content)
  • Ein NSTableView zeigt die title s des arrangedObjects (Bindung)
  • Ein NSTextView zeigt die content des ausgewählten Elements.

Nun, was ich will, ist automatisch auf die Array Zeilen Änderungen zu speichern (oder Array Zeilenstück Titel/Inhalt), aber ohne Core Data zu verwenden (was ich vermute, könnte der beste Weg zu gehen darüber gewesen).

Ich stelle mir vor, es ist eine ganz grundlegende Frage dieser, aber ehrlich gesagt habe ich nie wirklich wie Cocoa Auto-magische Art und Weise, Dinge zu tun ... so, ich brauche deine Hilfe ...

Wie soll ich gehen über das?

Antwort

1

Sie ein Array in eine Datei sehr leicht schreiben kann:

[yourArray writeToURL:someFileURL atomically:YES]; 

Das funktioniert, wenn alle Inhalte der Array-Eigenschaft sind Listenobjekte (dh sie sind NSNumber, NSString, NSDictionary, NSArray oder NSData Objekte). Dies ist in Ihrem Beispiel der Fall.

Sie können das Array dann entweder mit den Methoden arrayWithContentsOfURL: oder initWithContentsOfURL: neu erstellen, wenn Sie vom Datenträger laden. Wenn Ihr Modellobjekt komplexer als nur ein Array ist, sollten Sie Ihr Modellobjekt dem Protokoll NSCoding anpassen. Dies bedeutet, dass Sie die Methoden initWithCoder: und encodeWithCoder: implementieren müssen. Sie können dann die Klassen NSKeyedArchiver und NSKeyedUnarchiver verwenden, um Ihr Objekt in und aus einer NSData-Darstellung zu konvertieren, die Sie auf die Festplatte schreiben können.

Sie sollten die Archives and Serialization Programming Guide für detailliertere Informationen lesen.

0

könnten andere Lösung eine Shared User Defaults Controller und binden den -Controller Inhalt Array vom Array Controller zum Shared User Defaults Controller

hinzuzufügen sein