我有一个 NSPredicateEditor,它是我正在制作的工具的首选项面板的一部分。
我想像存储 NSUserDefaults 对象中的任何其他项目一样存储用户的选择,但是当我将 Binding 添加到 NSPredicateEditor 对象并运行该工具时,它不会保留数据并进一步导致其他默认值不显示. 当我取消绑定并重新编译时,其他一切都回来了。
将 NSPredicatedEditor 数据存储为用户首选项的最佳方式是什么?
谢谢。
我有一个 NSPredicateEditor,它是我正在制作的工具的首选项面板的一部分。
我想像存储 NSUserDefaults 对象中的任何其他项目一样存储用户的选择,但是当我将 Binding 添加到 NSPredicateEditor 对象并运行该工具时,它不会保留数据并进一步导致其他默认值不显示. 当我取消绑定并重新编译时,其他一切都回来了。
将 NSPredicatedEditor 数据存储为用户首选项的最佳方式是什么?
谢谢。
每当 UI 发生NSPredicateEditor
变化时,这些变化都会立即反映在编辑器中objectValue
(即,它所表示的NSPredicate
)。因此,您只需获取该谓词并使用NSKeyedArchiver
. 这将有效地将谓词转换为一个NSData
对象,可以将其保存为NSUserDefaults
.
要重新读回它,只需抓住NSData
对象,通过 , 运行它NSKeyedUnarchiver
,然后setObjectValue:
在谓词编辑器上运行它。
您可能可以通过绑定来完成此操作,尽管我从未尝试过。 您可以将 an 绑定value
到NSPredicateEditor
提供 an NSPredicate
(或NSPredicate
inNSData
形式)的东西。您可能还需要指定值转换器是NSKeyedUnarchiveFromData
转换器。