我有兩個NSUserDefaults鍵:第一個是與顯示一個介紹窗口有關的那個鍵,第二個是與在我的tableView中更改單元格背景顏色有關的那個鍵前三屆。只有當應用程序獲取更新時重置特定的NSUserDefaults鍵
現在,當我更新我的應用程序時,我想要第二個鍵重置,以便爲前3個會話顯示不同的單元格背景顏色。
這是我的代碼在我的應用程序委託:
[[NSUserDefaults standardUserDefaults] setObject: @"1.3.5" forKey:@"lastVer"];//in memory
NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastVer"];
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSLog(@"**** Version: %@",version);
NSNumber *runNumber = [[NSUserDefaults standardUserDefaults] objectForKey:@"runNum"];
if(![lastVersion isEqualToString: version]){
NSNumber *runNumber = [NSNumber numberWithInt:0];
[[NSUserDefaults standardUserDefaults] setObject:runNumber forKey:@"runNum"];
}
else {
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:([runNumber intValue] + 1)] forKey:@"runNum"];
NSLog(@"This is Run Number: %d", [runNumber intValue]);
}
if (runNumber == [NSNumber numberWithInt:0]){
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:([runNumber intValue] + 1)] forKey:@"runNum"];
NSLog(@"Run number: %d", [runNumber intValue]);
}
(注:runNumber是存儲單元格背景色爲3個會話密鑰)它會檢查lastVersion等於
bundle版本,它重置runNum的鍵(賦值爲0)。然後,如果runNum爲0,則增加runNumbers。
但是有一個問題!
當lastVersion與版本不同時,它會重置密鑰,但我不知道如何再次遞增runNum,而不需要重新設置運行次數,因爲每次打開應用程序時都會重置runNum!
即
lastVersion = 1.3.4
version = 1.3.5
if lastVersion is different from version, then runNum == 0
and if runNum == 0, runNum = runNum + 1
//CLOSING AND REOPENING THE APP
runNum = 0
runNum = runNum +1
//CLOSING AND REOPENING THE APP
runNum = 0
runNum = runNum + 1
//and so on..
當我關閉並重新打開應用程序時,runNum關鍵是0了!
如何重置runNum鍵只有一次,然後再次遞增?
編輯
我做了以下修改:
NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastVer"];
// get the current bundle version.
NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSLog(@"Last Version: %@, New Version: %@", lastVersion, currentVersion);
NSNumber *runNumber = [[NSUserDefaults standardUserDefaults] objectForKey:@"runNum"];
NSInteger runNumberValue = [runNumber integerValue];
if(![lastVersion isEqualToString: currentVersion]){
NSLog(@"Last Version and Version are not same.");
NSNumber *runNumber = [NSNumber numberWithInt:0];
[[NSUserDefaults standardUserDefaults] setObject:runNumber forKey:@"runNum"];
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"lastVer"];
NSLog(@"last Version is: %@",lastVersion);
}
else {
NSLog(@"Last Version and Version are same.");
NSInteger newRunNumberValue = runNumberValue++;
if(newRunNumberValue > 2) {
newRunNumberValue = 0;
}
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:newRunNumberValue] forKey:@"runNum"];
}
這是使在前3屆的細胞背景變化代碼:
NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastVer"];
// get the current bundle version.
NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSLog(@"Last Version: %@, New Version: %@", lastVersion, currentVersion);
NSNumber *runNumber = [[NSUserDefaults standardUserDefaults] objectForKey:@"runNum"];
if (!runNumber) {
NSLog(@"**** Resetting Run Number to zero ****");
NSNumber *runNumber = [NSNumber numberWithInt:0];
[[NSUserDefaults standardUserDefaults] setObject:runNumber forKey:@"runNum"];
} else {
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:([runNumber intValue] + 1)] forKey:@"runNum"];
NSLog(@"This is Run Number: %d", [runNumber intValue]);
}
if(![lastVersion isEqualToString: currentVersion]){
NSLog(@"Last Version and Version are not same.");
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"lastVer"];
NSLog(@"last Version is: %@",lastVersion);
//What should i do here to make the updated app show the different cells background?
}
else {
NSLog(@"Last Version and Version are same.");
//What should i do here to make the updated app show the different cells background?
}
現在:當用戶第一次下載它時(3次會話)以及用戶更新時,如何讓應用程序顯示不同的單元格背景該應用程序(即使在N次會議後)?我被困在這裏。
任何想法?
這幾乎是我的建議,爲搞清楚我沒有在我的答案中包含的代碼做得非常好;)有+1! – jrturton 2012-01-14 13:58:25
是的!謝謝 :) – Phillip 2012-01-14 14:15:09