强制“共享用户默认控制器”立即保存到磁盘?

时间:2012-05-15 03:38:42

标签: objective-c cocoa preferences

我有一个使用共享用户默认控制器的首选项窗格,它可以读取和保存首选项。看来,当对字段进行更改时,它们不会立即保存到plist fie中。当我的应用程序需要在更改完成后立即重新读取文件并且plist仍未更新时,这会产生问题。

如何强制首选项窗格立即更新首选项文件?

2 个答案:

答案 0 :(得分:2)

这将自动保存您立即对磁盘所做的任何更改:

NSUserDefaultsController *controller = [NSUserDefaultsController sharedUserDefaultsController];
[controller setAppliesImmediately:YES];

如果只在特定情况下需要这个,你也可以使用并保存一些昂贵的I / O(你真的应该尽量让缓存机制尽可能地缓存而不是立即写入磁盘):

NSUserDefaultsController *controller = [NSUserDefaultsController sharedUserDefaultsController];
[controller save:self];

另外,您确定要尝试解决正确的问题吗?您始终可以通过查询NSUserDefaults来获取用户默认值的最新版本,您无需关心当前版本是缓存在RAM中还是已写入磁盘。

答案 1 :(得分:0)

根据文档:

[userDefaults save:self];

[userDefaults setAppliesImmediately:YES];