2011-06-02 168 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

相关问题