1

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

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

4

2 回答 2

2

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

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

如果您只在特定情况下需要它,您还可以使用并节省一些昂贵的 I/O(您确实应该尝试让缓存机制尽可能多地缓存,而不是立即将所有内容写入磁盘):

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

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

于 2012-05-15T03:41:48.843 回答
0

根据文档:

[userDefaults save:self];

或者

[userDefaults setAppliesImmediately:YES];
于 2012-05-15T03:41:39.483 回答