0

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

我在哪里保存它们?我想我可以将它们保存在应用程序“缓存”中,对吗?

但是然后我如何让我的应用程序检查缓存中是否存在此资源,然后加载那个......否则加载应用程序包中的那个?

iOS要使用4.3,但如果它更容易我们可以转到5。

4

2 回答 2

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)返回 nil,则图像不存在,因此您必须从包中加载默认图像。

您可以使用 [[NSBundle mainbundle] pathForResource:@"yourFileNameHere" ofType:@"yourTypeHere"]这将返回您的包中文件的路径,您可以将其传递给您的默认包文件[UIImage imageWithContentsOfFile:]

此示例仅适用于 UIImage,但您可以轻松地将其调整为使用其他类。不过,我认为 UIImage 示例足以用于说明目的。

于 2012-05-07T11:35:18.520 回答
0

您可能想要创建一个版本控制方案。应用程序启动后(或定期)调用网络服务以非常便宜的方式询问它有什么版本。您将知道您拥有的版本(写在 plist 中或在文件夹结构中拥有版本号)。另一种选择是推送通知

接下来您必须考虑的是应用程序如何对获取新数据集作出反应。您只能在启动时执行此操作,但如果您将其绑定到网络呼叫,则可能会阻止启动体验。另一种选择是允许在应用程序打开时更改数据集。你可以有一个模型,它使用NSNotificationCenter来通知你的视图和控制器数据已经改变。我可能也会对存储进行版本控制(每个文件夹)以帮助过渡。

至于如何,您可以使用诸如ASIHttpRequest 、NSFileManager类的 Web 请求来写入文档目录,并使用 plist来保存诸如版本之类的设置。

于 2012-05-07T11:36:58.970 回答