2012-05-15 66 views
1

我有一個使用共享用戶默認值控制器的偏好設置窗格,它可以讀取和保存偏好設置。看起來,雖然對領域進行了修改,但他們並沒有立即被保存到plist fie。這造成了一個問題,當我的應用程序需要在更改完成後立即重新讀取文件並且plist仍未更新時。強制'共享用戶默認值控制器'立即保存到磁盤?

如何強制偏好窗格立即更新偏好文件?

回答

2

這將自動保存任何改變你馬上到磁盤:

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

如果您需要這個只有在特定的的情況下,你也可以使用並保存一些昂貴的I/O(你真的應該試着讓緩存機制緩存一個而不是立即寫入磁盤):

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

另外,你確定你正在嘗試解決正確的問題嗎?您可以隨時通過查詢NSUserDefaults獲取最新版本的用戶默認值,您不需要關心當前版本是緩存在RAM中還是已寫入磁盤。

+0

我試圖解決的問題是另一個對象被調用,並且該對象無法直接讀取這些值。結果,他必須從磁盤上取下它們。從NSUserDefaults中取出它可能比從磁盤讀取更好。 – Adam

+1

@Adam Yup,我強烈建議你在這種情況下使用'NSUserDefaults'! – JustSid

0

每文檔:

[userDefaults save:self]; 

[userDefaults setAppliesImmediately:YES];