好的,所以我正在实施一个经典场景:
NSPopupButton
itemsArray
会更新itemsArray
与NSArrayController
itemsArray
中的每个项目均为NSMutableDictionary
(包含密钥:title
,content
)NSTableView
显示title
(绑定)的arrangedObjects
NSTextView
显示所选项目的content
。现在,我想要的是自动保存对itemsArray(或itemsArray的项目标题/内容)的任何更改,但不使用Core Data(我怀疑这可能是最好的方法)。
我认为这是一个非常基本的问题,但老实说,我从来没有真正喜欢Cocoa的自动神奇做事方式......所以,我需要你的帮助......
我应该怎么做?
答案 0 :(得分:1)
您可以非常轻松地将数组写入文件:
[yourArray writeToURL:someFileURL atomically:YES];
如果数组的所有内容都是属性列表对象(即NSNumber
,NSString
,NSDictionary
,NSArray
或NSData
,这将有效对象)。在您的示例中就是这种情况。
然后,当您从磁盘加载时,可以使用arrayWithContentsOfURL:
或initWithContentsOfURL:
方法重新创建阵列。
如果模型对象比数组更复杂,那么您应该使模型对象符合NSCoding
协议。这意味着您需要实施initWithCoder:
和encodeWithCoder:
方法。然后,您可以使用NSKeyedArchiver
和NSKeyedUnarchiver
类将对象转换为可以写入磁盘的NSData
表示形式。
您应该阅读Archives and Serialization Programming Guide以获取更多详细信息。
答案 1 :(得分:0)
另一种解决方案可能是添加Shared User Defaults Controller
并将控制器内容数组从Array Controller
绑定到Shared User Defaults Controller