在IB中没有使用绑定和共享NSUserDefaults保存数据的麻烦

时间:2010-03-17 14:09:05

标签: xcode interface-builder cocoa-bindings nsuserdefaults

我有一个奇怪的问题,我无法弄明白。我对Interface Builder有点不满意。我想要做的似乎应该是简单的,但由于某种原因它不起作用。

在界面构建器中,我有一个带有简单NSTextField的首选项窗口。我已使用控制器键“值”和模型键“test”将值绑定到共享用户默认值控制器。我构建/运行我的应用程序并打开首选项窗口,在所述文本字段中键入一些随机值,关闭窗口。 Command-Q应用程序。然后在shell中为我的应用程序执行“defaults read com.xxx.yyy”,无法找到密钥和值。话虽这么说,似乎下次我启动应用程序并更改它的工作值,但前提是我在关闭窗口之前将焦点从NSTextField切换下来。

在NSUserDefaults的文档中,它说共享控制器会立即保存值,我在这里错过了一些愚蠢的东西吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:8)

我被问到这个问题已经很长时间了,以防其他人发现它有用。

听起来你需要为你绑定的文本字段设置“Continuously Updates Values”。否则,仅发送该值,因此,只有在“完成”编辑的某些事情发生时,才会更新首选项。这通常是通过按下Return来触发的,当你将焦点从窗口切换时也可能会发生这种情况(虽然我只是在我自己的一个应用程序中测试了这个并且它似乎没有提交编辑)。