1

わかりましたので、私は古典的なシナリオを実装しています:

  • NSPopupButtonアイテムが入ったA
  • 選択した値が変更されると、myitemsArrayが更新されます
  • itemsArrayにリンクされていますNSArrayController
  • の各項目はitemsArray(NSMutableDictionaryキー: titlecontent)
  • Anは(バインディング)の s をNSTableView表示します。titlearrangedObjects
  • 選択した項目のがNSTextView表示contentされます。

今、私が望むのは、itemsArray(またはitemsArrayのアイテムのタイトル/コンテンツ)への変更を自動的に保存することですが、コアデータを使用しないでください(これが最善の方法だったのではないかと思います)。

これは非常に基本的な質問だと思いますが、正直なところ、Cocoa の自動的に魔法のように物事を行う方法があまり好きではありません...だから、あなたの助けが必要です...

どうすればいいですか?

4

2 に答える 2

1

配列をファイルに非常に簡単に書き込むことができます。

[yourArray writeToURL:someFileURL atomically:YES];

これは、配列のすべてのコンテンツがプロパティリストオブジェクト(つまり、、、、、またはオブジェクト)NSNumberである場合NSStringに機能します。これはあなたの例の場合です。NSDictionaryNSArrayNSData

その後、ディスクからロードするときに、arrayWithContentsOfURL:またはメソッドのいずれかを使用してアレイを再作成できます。initWithContentsOfURL:

モデルオブジェクトが単なる配列よりも複雑な場合は、モデルオブジェクトをNSCodingプロトコルに準拠させる必要があります。initWithCoder:これは、とencodeWithCoder:メソッドを実装する必要があることを意味します。次に、NSKeyedArchiverandクラスを使用して、ディスクに書き込むことができる表現NSKeyedUnarchiverとの間でオブジェクトを変換できます。NSData

詳細については、アーカイブおよびシリアル化プログラミングガイドをお読みください。

于 2012-04-12T21:13:38.507 に答える
0

別の解決策として、 を追加して、コントローラ コンテンツ配列を から にShared User Defaults Controllerバインドすることもできます。Array ControllerShared User Defaults Controller

于 2014-12-08T23:21:48.287 に答える