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