2

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

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

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

谢谢。

4

1 回答 1

2

每当 UI 发生NSPredicateEditor变化时,这些变化都会立即反映在编辑器中objectValue(即,它所表示的NSPredicate)。因此,您只需获取该谓词并使用NSKeyedArchiver. 这将有效地将谓词转换为一个NSData对象,可以将其保存为NSUserDefaults.

要重新读回它,只需抓住NSData对象,通过 , 运行它NSKeyedUnarchiver,然后setObjectValue:在谓词编辑器上运行它。

可能可以通过绑定来完成此操作,尽管我从未尝试过。 您可以将 an 绑定valueNSPredicateEditor提供 an NSPredicate(或NSPredicateinNSData形式)的东西。您可能还需要指定值转换器是NSKeyedUnarchiveFromData转换器。

于 2011-03-07T00:55:18.790 回答