2011-11-12 145 views
1

我要发布我的应用程序的新版本。以前的版本使用了一些在较新版本中更改并需要处理的文件。我希望在用户更新应用程序时自动删除旧文件,否则应用程序会看到它们并处理它们(由于文件格式发生变化而导致错误)。 有没有这样的选择?是否发布新版本的应用程序删除旧版本的文件?

谢谢。

+0

我也想指出,算法基本上是这样的:1)如果文件不存在,请下载它们2)处理文件。问题是我无法替换旧文件,因为我需要从互联网上下载它们。那么我该如何继续? –

回答

0

由于您正在处理这些文件,因此一种选择是以某种方式将格式版本放入文件或文件夹路径中。将该版本烘焙成应用中的一个常量。

应用程序可以通过将常量追加到获取这些文件的路径中,或者查看文件的数据以获取格式版本并正确处理它(删除,重新下载等)。 )。

另一个好处是,如果您发布您的应用程序并且格式版本不会更改(可能 - 您只是修复了错误),则不必删除并重新下载这些文件。您也不必更改任何内容或更新任何例程 - 只是不要更改文件格式常量,也不会更改文件。如果您更改文件的格式,请更新该常量并且它可以正常工作。

+0

我喜欢这种方法,但我倾向于将数据版本作为变量放在数据文件本身中,这样我只需要搜索一个文件名。 – TigerCoding

+0

@Javy:使用应用程序版本的缺点是您的版本总是在变化 - 只有在文件格式版本发生变化时才会重新下载,而不是应用程序版本。 – bryanmac

+0

我不关注。版本保持不变(捆绑版本)。在启动时进行检查以确保版本相同,如果不一致,则在运行主应用程序之前,它会转到例程以处理数据的更新。例程(方法)在代码的更新版本中编码,并知道如何处理版本更改(重新下载,转换现有的等)。或者我错过了你的观点? – TigerCoding

0

它总是一个很好的做法,从代码中的包让你的应用程序的版本,并根据需要进行必要的修改:

NSString* versionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; 

然后,你可以比较这串(或浮动字符串的版本)来确定对数据所做的更改。您可能会删除旧数据(如您的情况),或者提取一些旧数据并创建新数据(通常的方式),或者应用程序可能根本不需要任何更改。

需要注意的是,您可能会上传/发布应用程序的多个版本,并且某些用户可能没有下载更新的版本。因此,最好有方法根据版本字符串更新数据,而不是期望它成为数据的最后一个版本。

+0

使用appVersion的缺点是appVersion的变化比您的文件格式发生变化(例如错误修复)。这会导致用户在修复二进制错误时不必要地重新下载文件。两者不同,不需要耦合。 – bryanmac

+0

但是如果这是一个简单的错误修复,代码可以告诉它不要下载。如果(版本== 2.02)//不下载/更改数据,则只更新数据版本号 – TigerCoding

+0

您不应该确定数据是否需要根据附加数据(如版本和构建大型开关块)进行更新。让数据定义它是否需要更新。如果数据具有文件格式版本(或按照文件格式版本存储在路径中),那么这就是事实,以及是否需要更新。 – bryanmac

相关问题