我有一个NSPredicateEditor,它是我正在制作的工具的首选项面板的一部分。
我想存储用户的选择,就像我在NSUserDefaults对象中的任何其他项一样,但是当我将Binding添加到NSPredicateEditor对象并运行该工具时,它将不会保留数据,并且进一步导致其他默认值不显示。当我拿走绑定并重新编译时,其他一切都会回来。
将NSPredicatedEditor数据存储为用户首选项的最佳方法是什么?
感谢。
答案 0 :(得分:2)
每当NSPredicateEditor
的用户界面发生变化时,这些更改会立即反映在编辑器的objectValue
中(即代表NSPredicate
)。因此,您可以抓取该谓词并使用NSKeyedArchiver
对其进行归档。这将有效地将谓词转换为NSData
对象,可以将其保存到NSUserDefaults
。
要重新阅读,只需抓住NSData
对象,在谓词编辑器中通过NSKeyedUnarchiver
和setObjectValue:
运行它。
你可以可能通过绑定完成此任务,但我从未尝试过。 You can bind the value
of an NSPredicateEditor
提供NSPredicate
(或NSPredicate
NSData
形式)的内容。您还可能需要指定值转换器是NSKeyedUnarchiveFromData
转换器。