iCloud 理解与应用

来源:互联网 发布:软件 开发 合同 编辑:程序博客网 时间:2024/04/28 17:29
目录:通过iCloud使用数据
            使用数据路存储大型数据 和 细腻得 改变通知
            为小型数据使用原子存储  当改变为 “批发”
            资料路式风格应用程序得指导
            基于文档式应用程序得指导
            模式迁移
            功能得限制



1、通过iCloud使用数据 

当你创造一个使用数据和iCloud的应用时,有两个你需要选择:
     1、你想要创造什么种类的应用?
     2、你想要什么样式得存储?
从广义讲,核心基本数据应用有两种形式,对于iCloud集合:
     1、资料库式风格得应用。这种应用通常有单一、持久的存储,并且存储得数据应用全局都可以使用。音乐和照片就是这种风格应用得例子。
     2、基于文档得应用。在应用程序得生命周期中,不同得文档也许被在不同得时期打开。Keynote 和Numbers 就是这种风格得应用。


如果你已经用核心数据在ios中,那么你可能有资料库式风格得应用了。对于这种,鼓励你使用SQLite存储 带上 核心数据得云存储得一体化。

UIkit  提供了对基于文档得应用的支持,这种应用使用核心数据  通过 UIMamagerdDocument 类--------代表一个文档的UIDocument 类的  具体子类。  对于资料库式应用程序,如果你以前没有使用过icloud,你一般当你将要使用时才去设置核心数据栈。对于资料库风格 或者是 基于文档的 应用程序,然而,你必须适当得配置持久化存储。

那怎么配置你想要采用得存储风格呢。有两种存储形式:
       1、 SQLite
       2、 原子(二进制存储形式) 或者 一种传统的原子存储-从NSAtomicStore衍生。

2、使用SQLite 存储大量数据集和细小得改变通知

 你通常使用SQLite 存储,因为它提供有效得每一个记录 改变 传播 和 相应得改变通知。

  在ios 5, 核心数据包括支持通过iCloud的SQLite得高效存储的增强。主要得新特性是,每一个你上传到持久化存储的改变被存储在iCloud得一个离散事务日志中,而不是直接存储到iCloud得持久化存储。这就意味着,通过iCloud,改变的传播高效(这个替代将为每一个改变推送给SQLite)。但对于这样,也有几个结果:
       *你必须告诉核心数据哪里去存储离散事务日志,和 存储改变 相关的。
           当配置一个存储时,你做这些通过提供NSPersistentStoreUbiquitousContentNameKey 得值和 可……选 NSPersistentStoreUbiquitousContentURLKey 得键值。(如果你没有指定一个NSPersistentStoreUbiquitousContentURLKey得值,那么一个URL得建造,通过应用束identifier对NSFileManager的 URLForUbiquityContainerIdentifier: 方法。)内容得名字被用于标识这个存储 通过不同设备,以至于事务始终与所有设备,多种持久化实例同步。出于这个原因,你应该必须确保你为每一个存储停工一个唯一得名字,例如UUID。
          
         *当你从iCloud删除一个存储时(或者使设备本地,或者完全删除),你必须直接删除相应得事务日志。

        你做相应得操作,通过NSFileManager。如果你指定一个传统和 惟一的NSPersistentStoreUbiquitousContentURLKey,
简单删除目录将会移除所有得和存储相关的事务日志数据;如果你得NSPersistentStoreUbiquitousContentURLKey被分享,那么你将仅仅移除NSPersistentStoreUbiquitousContentNameKey得子目录。

    * 你不必存储SQLite文件本身在有改变的地方,他将被传播通过iCloud。

      这个包括整个包含SQLite存储文件的父目录。
      这个将在以后在应用程序样式得文章中 讨论。