iOS网络编程-iCloud键值数据存储编程实例

简介:

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.  
  4. [super viewDidLoad]; 
  5.  
  6. NSUbiquitousKeyValueStore* store = [NSUbiquitousKeyValueStore defaultStore]; ① 
  7.  
  8. [[NSNotificationCenter defaultCenter]  ② 
  9.  
  10. addObserverForName: 
  11.  
  12. NSUbiquitousKeyValueStoreDidChangeExternallyNotification 
  13.  
  14. object:store 
  15.  
  16. queue:nil 
  17.  
  18. usingBlock:^(NSNotification *note) { ③ 
  19.  
  20. //更新控件状态 
  21.  
  22. [_switchSound setOn:[store boolForKey:UbiquitousSoundKey]]; ④ 
  23.  
  24. [_switchMusic setOn:[store boolForKey:UbiquitousMusicKey]];  ⑤ 
  25.  
  26. UIAlertView *alert = [[UIAlertView alloc] 
  27.  
  28. initWithTitle:@”iCloud变更通知” 
  29.  
  30. message:@”你的iCloud存储数据已经变更” 
  31.  
  32. delegate:nil 
  33.  
  34. cancelButtonTitle:@”Ok” 
  35.  
  36. otherButtonTitles:nil, nil]; 
  37.  
  38. [alert show]; 
  39.  
  40. }]; 
  41.  
  42. [store synchronize];  ⑥ 
  43.  
  44. //初始化控件状态 
  45.  
  46. [_switchSound setOn:[store boolForKey:UbiquitousSoundKey]];  ⑦ 
  47.  
  48. [_switchMusic setOn:[store boolForKey:UbiquitousMusicKey]];  ⑧ 
  49.  
  50.   
  51.  

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

 

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

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

 

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

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

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


本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1188886,如需转载请自行联系原作者

相关文章
|
3月前
|
安全 网络安全 Android开发
安卓与iOS开发:选择的艺术网络安全与信息安全:漏洞、加密与意识的交织
【8月更文挑战第20天】在数字时代,安卓和iOS两大平台如同两座巍峨的山峰,分别占据着移动互联网的半壁江山。它们各自拥有独特的魅力和优势,吸引着无数开发者投身其中。本文将探讨这两个平台的特点、优势以及它们在移动应用开发中的地位,帮助读者更好地理解这两个平台的差异,并为那些正在面临选择的开发者提供一些启示。
120 56
|
25天前
|
网络协议 测试技术 网络安全
Python编程-Socket网络编程
Python编程-Socket网络编程
19 0
|
4月前
|
监控 Python
单位网络监控软件中的PostScript图形编程
PostScript是一种强大的页面描述语言,广泛应用于图形编程和打印控制。在单位网络监控软件中,利用PostScript可以实现复杂的图形绘制和文本处理。本文将通过几个具体的代码示例,介绍如何在PostScript中进行图形编程,并讨论如何将监控到的数据自动提交到网站。
66 10
|
3月前
|
存储 Linux 网络安全
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
|
4月前
|
网络协议 开发者 Python
深度探索Python Socket编程:从理论到实践,进阶篇带你领略网络编程的魅力!
【7月更文挑战第25天】在网络编程中, Python Socket编程因灵活性强而广受青睐。本文采用问答形式深入探讨其进阶技巧。**问题一**: Socket编程基于TCP/IP,通过创建Socket对象实现通信,支持客户端和服务器间的数据交换。**问题二**: 提升并发处理能力的方法包括多线程(适用于I/O密集型任务)、多进程(绕过GIL限制)和异步IO(asyncio)。**问题三**: 提供了一个使用asyncio库实现的异步Socket服务器示例,展示如何接收及响应客户端消息。通过这些内容,希望能激发读者对网络编程的兴趣并引导进一步探索。
45 4
|
4月前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
【7月更文挑战第26天】在网络的数字宇宙中,Python Socket编程是开启网络世界大门的钥匙。本指南将引领你从基础到实战,成为网络世界的建筑师。
61 2
|
4月前
|
网络协议 程序员 视频直播
|
3月前
|
安全 Java 网络安全
云计算时代下的网络安全挑战与应对策略Java编程中的异常处理:从基础到高级
在云服务不断深入各行各业的今天,网络安全问题也随之凸显。本文将探讨云计算环境下的安全风险,并提出相应的防护措施,以期为相关行业提供参考和指导。 在Java的世界里,异常处理是代码健壮性的守护神。它不仅保护程序免于意外崩溃,还提供了一种优雅的方式来响应错误。本文将带你领略异常处理的艺术,从简单的try-catch语句到复杂的自定义异常和finally块的神秘力量,我们将一起探索如何让Java程序在面对不确定性时,依然能够优雅地起舞。
|
4月前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解
|
5月前
|
监控 网络协议 安全
Socket网络编程中的常见应用场景与实例分析
Socket网络编程中的常见应用场景与实例分析