我有一个NSPredicateEditor,它是我正在制作的工具的首选项面板的一部分。将NSPredicateEditor绑定到共享用户默认值控制器
我想存储用户的选择,就像我在NSUserDefaults对象中的任何其他项目一样,但是当我将绑定添加到NSPredicateEditor对象并运行该工具时,它不会保留数据并进一步导致其他项目默认不显示。当我拿走绑定并重新编译时,其他所有内容都会返回。
将NSPredicatedEditor数据存储为用户首选项的最佳方式是什么?
谢谢。
我有一个NSPredicateEditor,它是我正在制作的工具的首选项面板的一部分。将NSPredicateEditor绑定到共享用户默认值控制器
我想存储用户的选择,就像我在NSUserDefaults对象中的任何其他项目一样,但是当我将绑定添加到NSPredicateEditor对象并运行该工具时,它不会保留数据并进一步导致其他项目默认不显示。当我拿走绑定并重新编译时,其他所有内容都会返回。
将NSPredicatedEditor数据存储为用户首选项的最佳方式是什么?
谢谢。
每当NSPredicateEditor
的UI发生更改时,这些更改立即反映在编辑器的objectValue
(即其代表NSPredicate
)中。所以你可以抓住这个谓词并使用NSKeyedArchiver
进行存档。这将有效地将谓词转换为NSData
对象,该对象可以保存到NSUserDefaults
。
要重新读取它,只需抓住NSData
对象,在谓词编辑器中通过NSKeyedUnarchiver
和setObjectValue:
运行它。
你可以可能通过绑定完成这一点,但我从来没有尝试过。 You can bind the value
of an NSPredicateEditor
为东西,提供NSPredicate
(或 NSData
表格)。您可能还需要指定值变换器是NSKeyedUnarchiveFromData
变压器。
谢谢。它在Interface Builder中使用NSKeyedUnarchiveFromData。这为我节省了很多时间。我正在实现一个委托,通过单击按钮时谓词的描述来更新首选项。但是,现在感谢您的简单回答,我只是在界面构建器中绑定了绑定,并且它正常工作。大! – chaimp 2011-03-07 01:22:01