2012-01-12 127 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鍵以顯示我的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]; 
     } 
} 
} 

回答

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 

和一個getter:

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

編輯:

記得lastVersion是一個指針,你只要把它指向別處,不將其設置在stdUserDefaults並沒有關係不會將其同步到磁盤。

+0

的結果,從中我可以比較的版本,對不對?但是,使用代碼時出現錯誤:'語義問題:使用不兼容類型'void'的表達式初始化'NSString *'。正如你在上面看到的,我糾正了我的代碼,並且通過爲lastVersion分配最後的版本號來得到這個工作。 – Phillip 2012-01-12 16:01:33

+0

當然。我不太瞭解你在做什麼,但你可以確定比較包含數字的字符串。 – 2012-01-12 16:04:43

+0

我相信你正在使用你的代碼和我的混合代碼,我修正了我的問題,使其更加清晰。 – 2012-01-12 16:05:13

1

當然,如果你想檢查用戶是否使用最新版本的應用程序,你需要檢查外部資源。

例如

  1. 簡單的HTTP請求到您自己的服務器,它會返回您的最新應用程序版本。

  2. 然後比較這與目前的版本[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

  3. 店本次測試中NSUserDefaults

相關問題