EverBox开发笔记2iCloudKeyValueStore

下午抽了点时间,测试了下iCloud的Key/Value Store,主要用到NSUbiquitousKeyValueStore:

获取实例对象:

NSUbiquitousKeyValueStore * store = [NSUbiquitousKeyValueStore defaultStore];

保存数据:

[store setString:@”string to save” forKey:@”keyword”];

获取数据:

[store stringForKey:@”keyword”];

还有个隐含的方法会被系统自动调用,不过假如需要(App启动或退出时)马上跟云端同步数据的话,可以:

[store synchronize];

就是这几个简单的令人发指的API,就实现了iCloud Key/Value Storage的基本功能,基本原理是这样子:

1,存储的内容会先被保存到本地(in-memory)。

2,iOS会自动的、周期性的,将本地数据保存到云端。

3,通过侦听store,App可以在云端数据被修改时得到通知来更新数据。

一开始写测试代码时,从iOS开发者网站上下了《Adopting iCloud Storage – Part 1》,准备跟着视频学习使用iCloud API,结果效率低得惊人,配置“Entitlement”时,更因为视频语焉不详,测试失败,最后还是从这个官方教程找到详细的配置方式。

解决了配置“Entitlement”的问题后,调整了下测试步骤:

1,App启动时,调用[store synchronize]向云服务器获取数据,并将数据显示在界面。

2,在数据显示界面修改数据,并调用[store setString: forKey:]保存数据。

3,删除App后重新安装,回到步骤1,看能否看到刚才保存的数据。

测试结果:

1,App重新启动时,[store stringForKey:]什么也获取不到。

2,调用[store synchronize]后,过一段时间(尚不知如何度量,网络情况良好大约三秒内),即可获取到已经保存过的内容。

在这简单的接口里面,不知隐含了多少后台工作,Apple为开发者考虑的实在周到。整个测试花了150分钟左右,其中30分钟修改“Entitlement”配置,30分钟解决一个非常低级的问题——测试界面中,放了个“sync”按钮,用来主动发起跟云端的数据同步,但却忘了在IB中将消息处理函数和触摸消息连接起来,好在有高人指出了这个错误:)

原文地址:https://www.cnblogs.com/tara/p/2562837.html