2011-03-06 49 views
2

我有一个NSPredicateEditor,它是我正在制作的工具的首选项面板的一部分。将NSPredicateEditor绑定到共享用户默认值控制器

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

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

谢谢。

回答

2

每当NSPredicateEditor的UI发生更改时,这些更改立即反映在编辑器的objectValue(即其代表NSPredicate)中。所以你可以抓住这个谓词并使用NSKeyedArchiver进行存档。这将有效地将谓词转换为NSData对象,该对象可以保存到NSUserDefaults

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

你可以可能通过绑定完成这一点,但我从来没有尝试过。 You can bind the value of an NSPredicateEditor为东西,提供NSPredicate(或 NSData表格)。您可能还需要指定值变换器是NSKeyedUnarchiveFromData变压器。

+0

谢谢。它在Interface Builder中使用NSKeyedUnarchiveFromData。这为我节省了很多时间。我正在实现一个委托,通过单击按钮时谓词的描述来更新首选项。但是,现在感谢您的简单回答,我只是在界面构建器中绑定了绑定,并且它正常工作。大! – chaimp 2011-03-07 01:22:01