ios数据存储

之前lp生病手术,加上项目紧张,有些博友的消息没有回复.主要还是关于Omni的例子,不日整理好后上传到git,供交流学习.

下面总结下之前遇到的ios数据存储中的经验总结.

5.0以后,用户可以选择将程序备份到icloud,这对沙盒内的数据存储有了新的要求。

开启icloud备份后,程序内容可以备份到云端,这样用户数据可以在其他i设备上使用。这样,开发人员在沙盒中存储数据就有讲究了。直接上Apple的文档

下面简单翻译一下。

icloud和itunes对以下三个文件夹不会备份:

  • <Application_Home>/AppName.app
  • <Application_Home>/Library/Caches
  • <Application_Home>/tmp

以下是数据存储的几条规则

  1. 关键数据存储在<Application_Home>/Documents。所谓关键数据(critical data)是指不能有程序生成的如用户生成的文档或其他数据。
  2. 辅助文件(support files)指程序使用中通过下载获得或者用户可以重新创建的文件,他们的存放取决于ios版本:
  • ios5.1及以后,存储在<Application_Home>/Library/Application Support, 并设置NSURLIsExcludedFromBackupKey属性。
  • ios5以及之前的系统,存储在<Application_Home>/Library/Caches就可以避免被备份。对于5.0.1系统,也是存储在同样位置。但是通过以下方式设置不备份的属性。
  1. 缓存数据存储在<Application_Home>/Library/Caches。缓存数据指的是数据库文件和可以下载的文件,比如杂志/新闻/地图导航类应用需要用到的数据。缓存文件在存储空间不够的情况下会被系统删除。
  2. 临时数据<Application_Home>/tmp.临时数据指一段时间内不需要保存的数据,开发人员要注意随时情况此文件夹.

下面再介绍下程序下载更新后,系统如何处理沙盒数据.

下载更新并安装后,系统会新建一个文件夹安装程序,再把原有程序中的用户数据拷贝到新地址,再删除原有程序.用户数据指的就是以下两个文件夹的内容:

  • <Application_Home>/Documents
  • <Application_Home>/Library

 

另外,对于备份还有个概念要提一下:

1以上备份到远端指的是程序内的用户数据备份到icloud云服务器上,但是用户可以设置关闭对此应用的备份.

2程序中使用icloud功能,将文件存储到icloud云服务器,这是由程序功能决定的,而不是可以由用户左右的.

posted on 2012-05-24 21:47  scorpiozj  阅读(2770)  评论(1编辑  收藏  举报