2011-06-02 170 views

回答

6

捆綁版本並將其保存爲用戶默認值。

編輯:

這裏有三件事要注意。

  1. 捆綁版本:這是要釋放你的應用程序的版本。

  2. 舊版本:這將指示您的應用程序的先前版本。我們會將其存儲爲用戶默認值,以便我們在更新應用程序時知道舊版本。如果你的bundle版本是1.0,這顯然是零。

  3. 目標版本:這表示用戶的目標版本。我們將在稍後討論。

所以,條件如

bundleVersion > oldVersion

if(isVersionBetter:myBundleVersion thanVersion:oldVersion) 

要麼意味着我們要建立我們的數據庫(在這種情況下,包版本將是1.0和舊版本將是零)或更新我們的數據庫(在這種情況下捆綁版本將大於1.0,因此舊版本不會爲零)。

因此,正如我們所看到的,創建數據庫意味着用戶首次安裝應用程序。更新數據庫意味着用戶已經安裝了應用程序並正在更新數據庫。

但是,當您想要更新您的應用程序並希望保持數據庫原樣時,可能也會出現這種情況。也就是說,只有UI更新。

在這裏,目標版本進入圖片。

如上所述,目標版本是用戶定位的版本。如果用戶的目標是捆綁版本,所有的都和上面的一樣。但是,如果用戶的目標是捆綁版本以外的其他版本,我們將跳過數據庫更新部分,從而只允許更改UI。

所以,最後的聲明將是這樣的:

if(bundleVersion == targetVersion AND bundleVersion > oldVersion) { 
// Either create or update the database. 
}else { 
// Do nothing. Skips database updating and allows UI update. 
} 

因此,你的數據庫功能會是這個樣子

-(void) initWithTargetVersion:(NSString *) targetVersion { 

    NSString *oldDatabaseVersion = [[NSUserDefaults standardUserDefaults] stringForKey:@"OldDatabaseVersion"]; 
    NSString *bundleDatabaseVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 


    if([bundleDatabaseVersion isEqualToString:targetVersion] && [self isVersionBetter:oldDatabaseVersion new:targetVersion]) { 
     // Create or update the database. 
    }else { 
     // Do nothing. 
    } 
} 

其中用戶將通過目標版本如下:

[[DatabaseManager sharedManager] initWithTargetVersion:@"1.0"]; 
+0

過程如何? – rptwsthi 2011-06-03 03:30:51

相關問題