2012-05-07 30 views
0

我正在创建一个iphone应用程序,它使用xml从一些图像中获取一些数据。可以说,最初这些文件将在应用程序包中。但是,我想让我的应用程序从Web服务获取更新。所以我们可以说我下载了一个新的XML和新的图像。iphone更新应用程序中的某些文件

我该在哪里保存它们?我想我将能够将它们保存在应用程序“缓存”中吗?

但后来如何让我的应用程序检查,如果缓存中有这个资源,然后加载一个......其他加载一个应用程序包?

的iOS使用4.3,但如果它可以更容易,我们可以去5

回答

1

你将不得不使用的NSFileManager来保存文件,并从文件目录加载它。看看下面的链接,这实际上包含了所有你需要的信息:

http://www.friendlydeveloper.com/2010/02/using-nsfilemanager-to-save-an-image-to-or-loadremove-an-image-from-documents-directory-coding/

如果[UIImage imageWithContentsOfFile:fullPath];(FULLPATH是NSString的与包含在文档目录的路径,以你的形象)返回零,那么图象不存在,因此您必须从您的包中加载默认图像。

可以使用[[NSBundle mainbundle] pathForResource:@"yourFileNameHere" ofType:@"yourTypeHere"]这将路径返回到您的文件在你的包访问默认包文件,你可以把它传递给[UIImage imageWithContentsOfFile:]

这个例子只适用于UIImage的,但你可以轻松适应它使用其他类。尽管如此,我认为UIImage示例足以说明问题。

0

您可能想要创建版本控制方案。应用程序启动后(或定期)调用Web服务进行非常便宜的调用,询问它具有哪个版本。你会知道你有什么版本(写在plist中或在文件夹结构中有版本号)。另一种选择是pushing a notification

接下来要考虑的是应用程序如何反应以获取新的数据集。你只能在启动时才能做到这一点,但如果你将其限制在网络电话上,可能会阻止启动体验。另一种选择是允许数据集在应用程序打开时进行更改。您可以使用NSNotificationCenter的模型来通知您的视图和控制器数据已更改。我可能会对存储进行版本(每个文件夹)以帮助进行转换。

至于如何,您可以使用类似于ASIHttpRequest,NSFileManager的文件写入文档目录,并使用plists来保存设置,如版本。

相关问题