将NSPredicateEditor绑定到共享用户默认值控制器

时间:2011-03-06 23:56:53

标签: objective-c cocoa nsuserdefaults nspredicateeditor

我有一个NSPredicateEditor,它是我正在制作的工具的首选项面板的一部分。

我想存储用户的选择,就像我在NSUserDefaults对象中的任何其他项一样,但是当我将Binding添加到NSPredicateEditor对象并运行该工具时,它将不会保留数据,并且进一步导致其他默认值不显示。当我拿走绑定并重新编译时,其他一切都会回来。

将NSPredicatedEditor数据存储为用户首选项的最佳方法是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

每当NSPredicateEditor的用户界面发生变化时,这些更改会立即反映在编辑器的objectValue中(即代表NSPredicate)。因此,您可以抓取该谓词并使用NSKeyedArchiver对其进行归档。这将有效地将谓词转换为NSData对象,可以将其保存到NSUserDefaults

要重新阅读,只需抓住NSData对象,在谓词编辑器中通过NSKeyedUnarchiversetObjectValue:运行它。

你可以可能通过绑定完成此任务,但我从未尝试过。 You can bind the value of an NSPredicateEditor提供NSPredicate(或NSPredicate NSData形式)的内容。您还可能需要指定值转换器是NSKeyedUnarchiveFromData转换器。