我有一個應用程序可以設置首選項。它使用這些首選項,另一個應用程序也是如此。當我在第二個應用程序中使用以下代碼時,它會正確讀取一次首選項。Objective-C NSUserDefaults緩存可防止其他應用程序準確讀取更改
NSUserDefaults* settings = [NSUserDefaults standardUserDefaults];
[settings addSuiteNamed:@"com.WVS.Wrestling-Tools"];
[settings synchronize]; // this just a shot in the dark.. didn't work
[self setScoreboardIndex:[settings integerForKey:@"matName"]];
相同的代碼的後續調用,我得到的[設置integerForKey:@「matName」]總是那是第一次讀值。
在第一個應用程序中,我使用共享用戶默認值控制器來讀取/寫入首選項。不知道這個問題是否重要。
如何強制第二個應用程序始終獲取最新值?
這樣做。我將同步添加到第一個程序,以便它只在需要時執行,這很少。謝謝! – Adam
'synchronize'既是讀取又是寫入,因此在第二個程序中使用同步會導致新值被拾取。我不確定這是否會比'resetStandardUserDefaults'好,但我認爲唯一的區別不是創建一個新的'NSUserDefaults'對象。 –
不適合我。當我同步默認值時,通過Xcode更改我的plists內容,然後調用'resetStandardUserDefaults',它將恢復到預編輯的狀態...... –