我正在创建一个使用和xml的iphone应用程序来获取一些数据和一些图像。可以说最初这些文件将在应用程序包中。但后来我想让我的应用程序从Web服务获取更新。所以我要说下载一个新的xml和新的图像。
我在哪里保存?我想我能将它们保存在应用程序“缓存”中吗?
但是,如何让我的应用程序检查缓存中是否存在此资源,然后加载该资源...否则在应用程序包中加载该资源?
iOS使用4.3但如果它更容易,我们可以转到5。
答案 0 :(得分:1)
您必须使用NSFileManager将文件保存到文档目录并从文档目录加载文件。查看以下链接,其中包含您需要的所有信息:
如果[UIImage imageWithContentsOfFile:fullPath];
(fullPath是包含文档目录中图像路径的NSString)返回nil,则图像不存在,因此您必须从捆绑中加载默认图像。
您可以使用[[NSBundle mainbundle] pathForResource:@"yourFileNameHere" ofType:@"yourTypeHere"]
访问默认的捆绑文件。这会返回捆绑包中文件的路径,您只需将其传递给[UIImage imageWithContentsOfFile:]
此示例仅适用于UIImage,但您可以轻松地将其调整为使用其他类。我认为UIImage示例足以用于说明目的。
答案 1 :(得分:0)
您可能想要创建版本控制方案。应用程序启动后(或定期)调用Web服务进行非常便宜的调用以询问它具有哪个版本。您将知道您拥有的版本(在plist中写入或在文件夹结构中具有版本号)。另一个选项是pushing a notification。
您需要考虑的下一件事是应用程序如何对获取新数据集作出反应。您只能在启动时执行此操作,但如果您将其绑定到Web调用,则可能会阻止启动体验。另一个选项是允许数据集在应用程序打开时更改。您可以使用NSNotificationCenter模型通知您的视图和控制器数据已更改。我也可能会对存储进行版本控制(每个文件夹)以帮助进行转换。
至于如何,您可以使用ASIHttpRequest,NSFileManager等方式发送网络请求以写入文档目录,并plists保存类似版本的设置。