私は2つのNSUserDefaultsキーを持っています:最初は小さなイントロウィンドウを表示するもの、2番目は関連するものです。最初の3セッション。特定のNSUserDefaultsキーをリセットするときにのみアプリケーションがアップデートを取得する
私のアプリケーションを更新すると、最初の3セッションで異なるセルの背景色を表示するために、2番目のキーをリセットします。
これは私のコードは、私のアプリデリゲートである:
[[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はに等しい場合、それはチェック
バンドルのバージョンを返し、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キーを1回だけリセットしてから、再度インクリメントする方法はありますか?
EDIT
私は次のように変更作ら:
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セッション後も)?私はここで立ち往生している。
アイデア?
これは私が提案したもので、私の答えに含まれていないコードを見つけ出すのにうまくいきました。 – jrturton
はい、正確です!ありがとうございました :) – Phillip