2012-01-12 11 views
0

ユーザーが最新バージョンのアプリを使用しているかどうかを確認したいと思います。もしそうなら、私はいくつかの細胞の背景色を付ける必要があります。NSUserDefaultsでアプリの最新バージョンを確認する方法

これは私が使用しているコードです:私はチェックしたい

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]; 
    } 
} 

私はそれが正しいでしょうか?私のコードは最新のバージョンをチェックしていますか?どのように私はデバイス上のシミュレータ\でこの動作をシミュレートできますか?

私がしたいことは、別の背景色でテーブルビューのセルを表示する別のNSUserDefaultsキーを呼び出すために、ユーザーがアプリの最新バージョンを使用しているかどうかを確認することです。ユーザーが自分のアプリケーションの最新バージョンを使用している場合、私はセルの背景を変更するために使用してい

EDIT

コードユーザーが3回未満のアプリを使用している場合:

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]; 
     } 
} 
} 

答えて

4

このコードは、あなたがセッターを必要とする。..

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"]; 

編集:

lastVersionがポインタであることを覚えて、あなただけのstdUserDefaultsでそれを設定していないこと、それはどこかにポイントするように設定し、それはdoesnのそれをディスクに同期させないでください。

+0

で、このテストの結果に対して、これを比較し、それから、私は右、バージョンを比較することができるでしょうか?しかし、あなたのコードを使ってエラーが発生しています: 'Semantic Issue: 'NSString *'を互換性のない型 'void'の式で初期化する。上記のように、私は自分のコードを修正して、lastVersionに最後のバージョン番号を代入することでそれを得ることができます。 – Phillip

+0

私はあなたがしていることについて十分に分かっていませんが、数値を含む文字列を比較することはできます。 –

+0

あなたのコードと私のハイブリッドを使用していると確信しています。 –

1

ユーザーが最新バージョンのアプリケーションを使用しているかどうかを確認するには、外部リソースで確認する必要があります。

  1. 最新のアプリケーションバージョンを返す、あなたのサーバーへの単純なHTTPリクエスト。

  2. 次に、あなたの現在のバージョン[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

  3. ストアNSUserDefaults

関連する問題