在應用程序委託didFinishLaunching方法值將被用作新的設置爲用戶捆綁:無法讀取從[NSUserDefaults的standardUserDefaults]後同步
NSNumber *testValue = (NSNumber*)[[NSUserDefaults standardUserDefaults] objectForKey:@"settingsversion"];
if (testValue == nil)
{
NSNumber *numNewDB = [NSNumber numberWithBool:NO];
NSNumber *numFirstUse = [NSNumber numberWithBool:YES];
NSDate *dateLastStatic = [NSDate date];
NSDate *dateLastMobile = [NSDate date];
NSNumber *numSettingsversion = [NSNumber numberWithFloat:1.0];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
numNewDB, @"newdb",
numFirstUse, @"firstuse",
numSettingsversion, @"settingsversion",
dateLastStatic, @"laststaticupdate",
dateLastMobile, @"lastmobileupdate",
nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
[[NSUserDefaults standardUserDefaults] synchronize];
}
後來在另一個ViewController中,我試圖從同一個字典中讀取一個值,保存爲NSUserDefaults - 至少我認爲會這樣,但是我沒有得到任何有效的對象指針lastUpdate:
in .h file:
NSDate *lastUpdate;
在一個成員函數的.m文件
:
lastUpdate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"laststaticupdate"];
甚至,如果我打印出[NSUserDefaults的standardUserDefaults]的內容我只得到這樣的:
2010-04-29 15:13:22.322 myApp[4136:207] Content of UserDefaults: <NSUserDefaults: 0x11d340>
這使我得出的結論是沒有標準的UserDefaults字典在內存中的某個地方,或者它不能被確定爲這樣的結構。
編輯:每次我重新啓動應用程序ión設備,檢查testValue是零,我正在建立字典了,但一次運行後它應該是持久的電話,對不對?
我在哪裏做錯了什麼地方?我有這樣的感覺,我還沒有真正理解如何加載和保存iPhone上某個應用程序的持續設置。
除此之外,我還有什麼要做嗎?在XCode中集成settings.bundle或手動將字典保存到Documents文件夾?
有人可以幫我嗎?非常感謝!
非常感謝!這是保存值的問題。我誤解了文檔。 :) – Nonlinearsound 2010-04-29 14:07:08
難道是[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];引用和保留字典,並由此給了我一個有效的指針?正如我沒有使用setObject:我沒有得到有效的條目,但有效的字典指針 - 當然沒有保存到用戶的默認值。 – Nonlinearsound 2010-04-29 14:32:47