У меня есть два ключа NSUserDefaults: первый связан с тем, чтобы показать небольшое вступительное окно, а второй связан с изменением цвета фона ячеек в моем tableView для первых 3 сеансов.
Теперь, когда я обновляю свое приложение, я хочу сбросить второй ключ, чтобы показать другой цвет фона ячеек для первых 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 версии пакета, и сбрасывает ключ для 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 ТОЛЬКО один раз, а затем снова увеличить его?
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 сеансов)? Я застрял здесь.
Есть идеи?