iCloud键值数据存储设计

iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击“设置iCloud数据”按钮,将控件状态保存到iCloud服务器。右图是设备2画面,过几秒钟后设备2收到变更通知。

配置Xcode工程

使用Xcode创建一个iOS工程,工程创建好之后,选择TAGETS→MyNotes→Summary→Entitlements,我们可以在这里配置授权信息。

然后我们还需要应用设置代码签名标识,代码签名标识需要选择这个配置概要文件的。选择TAGETS→MyNotes→Code Signing Identity

设置完成之后可以开始编码工作了。

代码实现

首先是需要注册NSUbiquitousKeyValueStoreDidChangeExternallyNotification通知,并同步数据,代码参考ViewController.m的viewDidLoad方法:

  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. NSUbiquitousKeyValueStore* store = [NSUbiquitousKeyValueStore defaultStore]; ①
  5. [[NSNotificationCenter defaultCenter]  ②
  6. addObserverForName:
  7. NSUbiquitousKeyValueStoreDidChangeExternallyNotification
  8. object:store
  9. queue:nil
  10. usingBlock:^(NSNotification *note) { ③
  11. //更新控件状态
  12. [_switchSound setOn:[store boolForKey:UbiquitousSoundKey]]; ④
  13. [_switchMusic setOn:[store boolForKey:UbiquitousMusicKey]];  ⑤
  14. UIAlertView *alert = [[UIAlertView alloc]
  15. initWithTitle:@”iCloud变更通知”
  16. message:@”你的iCloud存储数据已经变更”
  17. delegate:nil
  18. cancelButtonTitle:@”Ok”
  19. otherButtonTitles:nil, nil];
  20. [alert show];
  21. }];
  22. [store synchronize];  ⑥
  23. //初始化控件状态
  24. [_switchSound setOn:[store boolForKey:UbiquitousSoundKey]];  ⑦
  25. [_switchMusic setOn:[store boolForKey:UbiquitousMusicKey]];  ⑧
  26. }

保存数据到iCloud存储,代码ViewController.m的setData:方法:

  1. - (IBAction)setData:(id)sender {
  2. NSUbiquitousKeyValueStore* store = [NSUbiquitousKeyValueStore defaultStore];
  3. //存储到iCloud
  4. [store setBool:_switchSound.isOn forKey:UbiquitousSoundKey];
  5. [store setBool:_switchMusic.isOn forKey:UbiquitousMusicKey];
  6. [store synchronize];
  7. }

因为是BOOL值所以存储使用的方法是setBool:forKey:。最后不要忘记解除注册的通知,在视图控制器中解除通知可以在didReceiveMemoryWarning方法中完成:

  1. - (void)didReceiveMemoryWarning {
  2. [super didReceiveMemoryWarning];
  3. [[NSNotificationCenter defaultCenter] removeObserver:self];
  4. }

由于本应用中只有一个通知,因此可以使用[[NSNotificationCenter defaultCenter] removeObserver:self]语句解除全部通知,而不影响其它的通知,如果还有其它的通知我们要慎用这个语句。

编程完成代码我们可以测试一下,这个应用的测试很麻烦,需要两个真实设备而不能在模拟器上进行。运行两个设备,点击其中一个设备的“设置iCloud数据”按钮,过几秒钟后另外一个设备收到变更通知。

出自《iOS网络编程与云端应用最佳实践》作者:关东升 新浪微博@tony_关东升

iOS网络编程-iCloud键值数据存储编程实例相关推荐

  1. [转]实现键值对存储(长文)

    实现键值对存储(0):目录 本文由 伯乐在线 - 熊铎 翻译.未经许可,禁止转载! 英文出处:Emmanuel Goossaert (CodeCapsule.com).欢迎加入翻译组. 2014年7月 ...

  2. php后台和ios网络请求,iOS网络 POST通过JSON传数据到后台

    后台php脚本代码 header('Content-Type:text/plain;charset=utf-8'); $json = file_get_contents('php://input'); ...

  3. Matlab使用键值数据读取和分析 MAT 文件

    为 MAT 文件中的键值对数据创建数据存储,该文件是mapreduce. 然后,该示例展示了如何读取数据存储中的所有数据并对其进行排序.此示例假定 MAT 文件中的数据适合内存. mapredout. ...

  4. Android - 键值对存储 SharedPreference、DataStore、MMKV

    一.概念 以键值对的方式保存少量的数据,通常用来存数程序的一些配置信息,如是否打开音效.是否使用震动效果.窗口状态.是否进入过向导界面等. 二.SharedPreference 路径:data/dat ...

  5. java vk键值_Windows Mobile 手机编程常用键值(VK)对应表

    类型:PPC|WM平台大小:322KB语言:中文 评分:6.6 标签: 立即下载 Windows Mobile 常用键值(VK)对应表 #define VK_TSOFT1 VK_F1 // Softk ...

  6. ios字典存bool_iOS 常见的数据存储方式

    一.plist 存储 //获取Plist文件的全路径NSString *path = [[NSBundle mainBundle] pathForResource:@"shops" ...

  7. ios网络学习------8 xml格式数据的请求处理 用代码块封装

    #pragma mark 载入xml - (void)loadXML {//获取网络数据.NSLog(@"load xml");//从webserver载入数据NSString * ...

  8. go map的定义和使用 键值对存储

    定义map    var m map[string]int //定义map 初始化map    m = make(map[string]int) //初始化map 修改map中ok 的值  m[&qu ...

  9. iOS网络--同步,异步下载数据

    一. 这一节我们来学习几种下载数据的方式,目的在于学习同步,异步下载数据的知识. 二. 1.直接同步下载数据 //直接下载 同步下载 阻塞主线程 NSURL * url = [NSURL URLWit ...

最新文章

  1. Asp.NET中常用的一些优化性能的方法
  2. android textview图标左侧,Android 自定义 TextView drawableTop 图标与文字左对齐(效果图)...
  3. python-docx官方声明
  4. js计算两个日期的时间差
  5. HBuilderX 自述文件
  6. keil优化等级设置
  7. Java 8发布一年后,IDE和编译器尚未完全就绪
  8. YAPI接口自动化测试工具---使用记录
  9. onvif学习笔记3:NTP命令实现的示例
  10. Vue学习笔记之01-Vue的特点
  11. 《C++游戏编程入门(第4版)》——1.2 编写第一个C++程序
  12. 利用EEPROM实现arduino的断电存储
  13. 2019新闻自动挂机阅读脚本
  14. FlashCC导入使用greensock(TweenLite)包
  15. 简单的sql注入之2WP
  16. 如何分辨HDD/SSD硬盘接口?
  17. LevelDB整体介绍
  18. 一套政务OA系统,助力高效线上办公
  19. 国内最全的Android市场,最全Android软件商店
  20. pcl小知识(十一)——对StatisticalOutlierRemoval的理解

热门文章

  1. 2018年人工智能将赋能所有行业,未来市场将超过400亿美元
  2. 字节、腾讯、阿里的开发为啥都在用Python?网友:又酸又香!
  3. 人均月薪 7.5 万,腾讯 Q2 成绩单来了,网友酸了?
  4. react16 渲染流程
  5. Fragment 复习一
  6. 《编程原本 》一2.1 变换
  7. 1个Python特征选择工具,助力实现高效机器学习
  8. 前端小项目:使用canvas绘画哆啦A梦
  9. IOS反汇编工具Hopper分析Crash Log
  10. POJ2985 The k-th Largest Group(平衡树查询第K大)