Как проверить последнюю версию приложения с NSUserDefaults - PullRequest
0 голосов
/ 12 января 2012

Я хочу проверить, использует ли пользователь последнюю версию приложения.Если так, я должен покрасить фон некоторых ячеек.

Это код, который я использую:

appDelegate.m

NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastVer"];

метод, в котором я хочу проверить:

NSString *lastVersion = (NSString *) [[NSUserDefaults standardUserDefaults] objectForKey:@"lastVer"];
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
lastVersion = @"1.3.4";
if(![lastVersion isEqualToString:version]){
    cell.backgroundColor = [UIColor yellowColor]; ; 
    cell.imageView.image = [UIImage imageNamed:@"image.png"];

  } 
  else { 
       cell.imageView.image = nil;
       cell.backgroundColor = [UIColor whiteColor];
  }
}

Amя делаю это правильно?Мой код проверяет последнюю версию или?Как я могу симулировать это поведение в симуляторе \ на устройстве?

Что я хочу сделать, это проверить, использует ли пользователь последнюю версию приложения, чтобы вызвать другой ключ NSUserDefaults, чтобы показать ячейки моего tableView с другим цветом фона.

РЕДАКТИРОВАТЬ

Код, который я использую для изменения фона ячеек, если пользователь использует последнюю версию моего приложения и если пользователь использовал приложение меньше, чемтрижды:

    NSString *cellValue = cell.textLabel.text;
    NSNumber *runNumber = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"runNum"]; 
    NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastVer"];
    NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

    if (!runNumber) { 
                runNumber = [NSNumber numberWithInt:0]; 
                [[NSUserDefaults standardUserDefaults] setObject:runNumber forKey:@"runNum"]; 
                [[NSUserDefaults standardUserDefaults] synchronize]; 
            } 

    if([lastVersion isEqualToString:version]){ //check if the user is using the latest version
       if ([runNumber intValue] < 4) { //check if user has used the app less than 3 times 
           if ([cellValue isEqual: "someText"] ){ 
               cell.backgroundColor = [UIColor yellowColor]; ; 
               cell.imageView.image = [UIImage imageNamed:@"image.png"];
              } 
            else { 
            cell.imageView.image = nil;
            cell.backgroundColor = [UIColor whiteColor];
            } 
        }   
        else {
           cell.imageView.image = nil;
           cell.backgroundColor = [UIColor whiteColor]; 
        }
 }
}

Ответы [ 2 ]

4 голосов
/ 12 января 2012

этот код ничего не установит ..

NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastVer"];
lastVersion = @"1.3.4";

вам нужен установщик:

[[NSUserDefaults standardUserDefaults] setObject: @"1.3.4" forKey:@"lastVer"];//in memory
[[NSUserDefaults standardUserDefaults] synchronize];//to disk

и получатель:

NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastVer"];

edit:

помните, что lastVersion является указателем, и вы просто устанавливаете его так, чтобы он указывал куда-то еще, что не задает его в stdUserDefaults и не синхронизирует его с диском.

1 голос
/ 12 января 2012

Конечно, если вы хотите проверить, использует ли пользователь последнюю версию приложения, вам нужно будет проверить это с помощью внешнего ресурса.

, например

  1. Простой HTTP-запрос на ваш собственный сервер, который возвращает вашу последнюю версию приложения.

  2. Затем сравните это с текущей версией [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

  3. Сохранить результат этого теста в NSUserDefaults

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...