2012-04-12 73 views
1

OK,所以我采取一个经典场景:NSArrayController的+ NSTableView的:自动保存更改而不核心数据

  • 一个NSPopupButton有一些项目在它
  • 当选择的值发生变化,我itemsArray更新
  • itemsArray链接到NSArrayController
  • itemsArray每一项都是一种NSMutableDictionary(连键:titlecontent
  • 一种NSTableView显示title S上的arrangedObjects(结合的)
  • 一种NSTextView显示所选择的项的content

现在,我想要的是自动保存itemsArray(或itemsArray的项目标题/内容)的任何更改,但没有使用核心数据(我猜想可能是最好的方式去做)。

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

我应该如何去关于那个?

回答

1

你可以写一个数组到一个文件很容易:

[yourArray writeToURL:someFileURL atomically:YES]; 

如果阵列中的所有内容都是属性列表对象(即它们是NSNumberNSStringNSDictionaryNSArrayNSData对象这将工作)。你的例子就是这种情况。

然后,您可以使用任一arrayWithContentsOfURL:initWithContentsOfURL:方法重新创建数组当你从磁盘加载。

如果你的模型对象比一个数组更复杂,那么你应该让你的模型对象符合NSCoding协议。这意味着您需要实施initWithCoder:encodeWithCoder:方法。然后,您可以使用NSKeyedArchiverNSKeyedUnarchiver类的对象转换为和从NSData表示,你可以写入到磁盘。

您应该阅读Archives and Serialization Programming Guide了解更多详细信息。

0

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

相关问题