1

好的,所以我正在实现一个经典场景:

  • ANSPopupButton里面有一些物品
  • 当所选值更改时,我itemsArray已更新
  • itemsArray链接到一个NSArrayController
  • 中的每个项目itemsArray都是一个NSMutableDictionary(带有键 : title, content
  • AnNSTableView显示(绑定)的titlesarrangedObjects
  • 显示所选项目的NSTextViewcontent

现在,我想要的是自动保存对 itemsArray(或 itemsArray 的项目标题/内容)的任何更改,但不使用核心数据(我怀疑这可能是最好的方法)。

我想这是一个相当基本的问题,但老实说,我从来没有真正喜欢过 Cocoa 的自动魔法做事方式......所以,我需要你的帮助......

我该怎么做呢?

4

2 回答 2

1

您可以非常轻松地将数组写入文件:

[yourArray writeToURL:someFileURL atomically:YES];

如果数组的所有内容都是属性列表对象(即它们是NSNumberNSString、或对象)NSDictionary,这将起作用。在您的示例中就是这种情况。NSArrayNSData

然后,您可以在从磁盘加载时使用arrayWithContentsOfURL:或方法重新创建阵列。initWithContentsOfURL:

如果您的模型对象不仅仅是一个数组,那么您应该使您的模型对象符合NSCoding协议。这意味着您需要实现initWithCoder:andencodeWithCoder:方法。然后,您可以使用NSKeyedArchiverNSKeyedUnarchiver类将对象与NSData可以写入磁盘的表示形式相互转换。

您应该阅读存档和序列化编程指南以获取更多详细信息。

于 2012-04-12T21:13:38.507 回答
0

另一种解决方案可能是添加一个并将Shared User Defaults Controller控制器内容数组Array ControllerShared User Defaults Controller

于 2014-12-08T23:21:48.287 回答