`

iOS网络编程-iCloud文档存储编程实例

阅读更多

iCloud文档存储编程相对键值数据存储而言比较复杂,涉及到自定义文档类、获得iCloud文档目录、查找Ubiquity容器中的文档、保存文档和解决文档冲突等内容。

 

实例:iCloud文档存储编程设计

实例介绍一下iCloud文档存储编程过程,画面中有一个文本框和一个按钮控件,在设备1输入内容,点击“保存数据”按钮,将数据保存iCloud服务器。右图是设备2画面,过几秒钟后设备2上会读取iCloud服务器端数据,并显示在文本框中。

14

配置Xcode工程

编写iCloud文档存储编应用程序也需要在Xcode工程中进行一些配置,选择TAGETS→MyNotes→Summary→Entitlements

15

在图中Ubiquity Contrainers添加com.51work6.MyNotes,这是Ubiquity容器标识,可以有多个Ubiquity容器标识,这个容器标识代表着不同的目录。com.51work6.MyNotes代表目录如下所示:

/var/mobile/Library/Mobile Documents/98Z3R5XU29~com~51work6~MyNotes/

其中的98Z3R5XU29是在iOS开发者配置门户网站创建App ID时候生成的,它被称为Team ID

如果应用中没有使用iCloud键值数据存储key-Value Store可以不用配置。

自定义文档类

我 们需要自己封装一个文档类,它继承抽象类UIDocument,而UIDocument实现NSFilePresenter协议。实现 NSFilePresenter协议的类,它所代表的文件和目录可以被查看和编辑,这些NSFilePresenter实现类与文件协调者类 NSFileCoordinator结合使用,可以协调管理文件或目录。

这个类我们命名为MyCloudDocument, MyCloudDocument的代码如下:

#import <UIKit/UIKit.h>

 

@interface MyCloudDocument : UIDocument ①

@property (strong, nonatomic) NSString *contents;

@end

 

#import ”MyCloudDocument.h”

@implementation MyCloudDocument

 

//加载数据

- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError ②

{

if ([contents length] > 0)

{

self.contents = [[NSString alloc] initWithData:contents encoding:NSUTF8StringEncoding]; ③

}

return YES;

}

//保存数据

- (id)contentsForType:(NSString *)typeName error:(NSError **)outError ④

{

return [self.contents dataUsingEncoding:NSUTF8StringEncoding];  ⑤

}

@end

 

获得iCloud文档目录

iCloud文档目录是指在Ubiquity容器下的Document目录,因此获得了Ubiquity容器的根目录,就可以获得的iCloud文档目录了。

ViewController.m中的 ubiquitousDocumentsURL方法可以iCloud文档目录:

//请求本地Ubiquity容器,从容器中获得Document目录URL

- (NSURL *)ubiquitousDocumentsURL {

NSFileManager* fileManager = [NSFileManager defaultManager]; ①

NSURL* containerURL = [fileManager

URLForUbiquityContainerIdentifier:@"98Z3R5XU29.com.51work6.MyNotes"]; ②

containerURL = [containerURL URLByAppendingPathComponent:@"Documents"]; ③

return containerURL;

}

 

查找Ubiquity容器中的文档

获得iCloud文档目录后,我们需要找到容器中的文件。查询容器中的文件需要注册两个广播通知:

NSMetadataQueryDidFinishGatheringNotification  查询结束发出通知;

NSMetadataQueryDidUpdateNotification  查询结束,进入开始更新阶段发出的通知;

ViewController.m中注册和解除通知代码如下:

- (void)viewDidLoad

{

[super viewDidLoad];

//为查询iCloud文件的变化,注册通知

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(updateUbiquitousDocuments:)

name:NSMetadataQueryDidFinishGatheringNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(updateUbiquitousDocuments:)

name:NSMetadataQueryDidUpdateNotification object:nil];

 

//查询iCloud文件的变化

[self searchFilesOniCloud];

 

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

 

 

 

保存文档 

保存文档很简单,它是在ViewController.m中的 saveClick:方法处理的,saveClick:方法是点击按钮时候触发:

- (IBAction)saveClick:(id)sender {

_myCloudDocument.contents = _txtContent.text;

[_myCloudDocument updateChangeCount:UIDocumentChangeDone];

[_txtContent resignFirstResponder];

}

 

 

保 存成功之后我们可以在其它设备上看看是否iCloud中已经有abc.txt文档了。如果使用Mac OS X系统电脑,我们可以在“系统偏好设置”中打 开iCloud对话框,点击“管理”按钮可以打开iCloud空间管理对话框,其中的MyNotes是我应用名,右边的abc.txt创建的文件。

16

如果在iPhone、iPod touch和iPad等iOS设备中查看,可以启动设置应用程序,也进入到存储空间管理中,我的iPod touch中查看的情况。

17

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

分享到:
评论

相关推荐

    IOS应用源码Demo-iCloud代码示例-毕设学习.zip

    【标题】"IOS应用源码Demo-iCloud代码示例-毕设学习.zip"指的是一个包含iOS应用程序源代码的压缩文件,特别关注了如何在iOS应用中集成和使用iCloud功能。这个资源对于那些正在进行毕业设计或者希望深入理解iOS开发,...

    IOS应用源码之【应用】-iCloud代码示例.rar

    在iOS开发中,iCloud是一项强大的云存储服务,它允许开发者将用户的数据同步到苹果的云端,以便在多个设备间无缝地共享和访问。这个压缩包"【应用】-iCloud代码示例.rar"提供了iOS应用中使用iCloud功能的具体代码...

    【应用】★★★★-iCloud代码示例.zipIOS应用例子源码下载

    【应用】★★★★-iCloud代码示例.zipIOS应用例子源码下载【应用】★★★★-iCloud代码示例.zipIOS应用例子源码下载 1.适合学生学习研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    IOS网络编程与云端应用

    iOS应用可以通过集成各种云端服务,如云存储(iCloud、AWS S3)、推送通知(APNs)、后台任务(Background Modes)等,来增强功能和用户体验。书中将详细讲解如何与这些服务进行接口对接,实现高效的数据同步和离线...

    CoreData-ICloud

    CoreData 是苹果公司提供的一种数据管理框架,用于iOS和macOS应用中存储、管理和检索对象。它是Objective-C和Swift开发者处理复杂数据模型的强大工具。在iOS应用中,使用CoreData可以方便地创建、修改和查询数据库,...

    一步一步学习iOS5编程-项目源代码

    本资源是一步步学习iOS 5编程的项目源代码,非常适合初学者和有经验的开发者深入理解iOS应用开发。接下来,我们将详细探讨iOS 5中的关键知识点。 1. **Storyboards**: iOS 5引入了Storyboard,这是一种全新的UI...

    Laravel开发-icloud

    "Laravel开发-icloud" 提到了云上传这一主题,这意味着我们将探讨如何使用Laravel集成iCloud服务来实现文件的云端存储。在这个教程中,我们将深入理解Laravel的文件系统(Filesystem)和其对各种云存储驱动的支持,...

    《iOS网络编程与云端应用最佳实践》源码

    《iOS网络编程与云端应用最佳实践》是介绍iOS 6网络编程和云端应用开发技术书籍,介绍了苹果网络、数据交换格式、WebService、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook、以及社交网络...

    react-native-icloud-sync:用于与icloud同步的React-native包装器

    react-native-icloud-sync 用于与icloud同步的React-native包装器。 将其添加到您的项目 运行npm install react-native-icloud-sync --save 在XCode中打开您的项目,右键单击Libraries ,然后单击Add Files to ...

    藏经阁-Intercepting-iCloud-Keychain.pdf

    iCloud Keychain 安全机制剖析 iCloud Keychain 是 Apple 公司提供的一种基于云端的密码管理系统,旨在帮助用户安全地存储和同步各种密码、信用卡信息、Wifi 密码等敏感数据。该系统采用了端到端加密和基于硬件安全...

    IOS禁止同步到iCloud的封装类

    在iOS开发中,iCloud是苹果提供的一种云存储服务,允许用户在不同设备间同步数据。然而,在某些情况下,开发者可能需要阻止特定的文件或目录同步到iCloud,以保护用户的隐私、避免数据泄露或是优化应用程序性能。...

    iOS 5 Core framework iCloud

    文件标题和描述明确指向了关于 iOS 5 的核心框架、图形处理、位置服务以及 iCloud 等技术主题,但提供的部分文档内容却涉及了一个完全不同的历史话题。 为了满足您的需求,我将基于文件的标题、描述和标签来生成...

    IOS网络编程与云端应用最佳实践 + 随书代码.zip

    《清华开发者书库:iOS网络编程与云端应用最佳实践》是介绍iOS 6网络编程和云端应用开发技术书籍,介绍了苹果网络、数据交换格式、Web Service、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook...

    nosync-icloud:避免iCloud同步node_modules(避免node_modules与iCloud同步)

    nosync-icloud 避免 iCloud 同步 node_modules(Avoid syncing node_modules to iCloud)。     安装 npm i -g nosync-icloud # or yarn global add nosync-icloud 我要解决什么痛点? 很多开发者都在使用 Mac ...

    传智播客iOS6免费公开课程-调用icloud

    iCloud是苹果公司提供的一个云存储和云计算服务,它允许用户在各种Apple设备之间同步和存储数据,如照片、文档、联系人、日历等。通过学习这门课程,开发者可以掌握如何利用iCloud的强大功能来提升应用的用户体验。 ...

    Swift编程-iOS应用-沙盒模型

    Swift编程在iOS应用开发中扮演着至关重要的...总之,Swift编程-iOS应用-沙盒模型的学习不仅关乎技术实践,更关乎用户隐私保护和应用安全性的意识。理解并掌握沙盒模型,能让你的iOS应用更加专业且符合苹果的开发规范。

    iOS网络编程与云端应用最佳实践随书代码

    iOS网络编程与云端应用最佳实践随书代码,系统论述了iOS 6网络编程和云端应用开发技术,介绍了苹果网络、数据交换格式、Web Service、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook、社交网络...

    iOS-Contacts-App

    在iOS平台上,Contacts App是系统内置的一个重要应用,它允许用户管理个人和组织的联系信息。这个项目"iOS-Contacts-App"似乎是一个开源版本或一个教程,旨在帮助开发者了解如何在iOS上创建类似功能的应用。我们将...

    iOS网络编程与云端应用最佳实践

    开发者可以利用iCloud存储键值对、文档和文件,并且能够使应用的用户数据在多台设备间保持最新状态。实现iCloud功能需要熟悉CloudKit、NSUbiquitousKeyValueStore以及NSUbiquitousDocumentStore等技术。 四、社交...

Global site tag (gtag.js) - Google Analytics