zoukankan      html  css  js  c++  java
  • 文档容器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_关东升

    文章结束给大家分享下程序员的一些笑话语录: 这年头的互联网真是娱乐了中国,网民们从各种各样的“门”里钻来钻去,又有好多“哥”好多“帝”,值得大家品味不已……网络经典语录,关于IT与互联网,经典与您分享!

  • 相关阅读:
    搜狗图片抓取,主要以图集类进行抓取
    使用mongo进行去重操作
    爬虫实战01_淘宝模拟登录
    Linux常用命令02(远程管理)
    Linux常用命令01(文件和目录)
    Linux终端命令格式
    常用Linux命令的基本使用
    闭包与私有变量
    三栏布局的几种方法
    redux和react-redux小记
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3055411.html
Copyright © 2011-2022 走看看