zoukankan      html  css  js  c++  java
  • 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中将消息处理函数和触摸消息连接起来,好在有高人指出了这个错误:)

  • 相关阅读:
    java:线上问题排查常用手段
    去fastjson笔记
    如何让java中的注释代码执行?
    spring中aop不生效的几种解决办法
    mysql事务隔离级别/脏读/不可重复读/幻读详解
    业务系统-全球化多时区的解决思路
    mysql虚拟列(Generated Columns)及JSON字段类型的使用
    freeswitch笔记(7)-放音控制
    JVM问题典型案例定位学习
    freeswitch笔记(6)-会议功能简介
  • 原文地址:https://www.cnblogs.com/tara/p/2562837.html
Copyright © 2011-2022 走看看