文档容器iOS网络编程-iCloud文档存储编程实例
在本文中,我們主要紹介文檔容器的容內,自我感覺有個不錯的建議和大家分享下
????iCloud文檔存儲程編對相鍵值據數存儲而言比較復雜,涉及到自定義文檔類、取得iCloud文檔錄目、找查Ubiquity容器中的文檔、保存文檔和決解文檔沖突等容內。
????
????實例:iCloud文檔存儲程編設計
????實例紹介一下iCloud文檔存儲程編進程,畫面中有一個文本框和一個按鈕控件,在設備1入輸容內,點擊“存保據數”按鈕,將據數存保iCloud服務器。右圖是設備2畫面,過幾秒鐘后設備2上會取讀iCloud服務器端據數,并示顯在文本框中。
????
????配置Xcode程工
????編寫iCloud文檔存儲編應用程序也須要在Xcode程工中進行一些配置,選擇TAGETS→MyNotes→Summary→Entitlements
????
????在圖中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 = [fileManagerURLForUbiquityContainerIdentifier:@"98Z3R5XU29.com.51work6.MyNotes"]; ②containerURL = [containerURL URLByAppendingPathComponent:@"Documents"]; ③return containerURL;}????找查Ubiquity容器中的文檔
????取得iCloud文檔錄目后,我們須要找到容器中的文件。查詢容器中的文件須要冊注兩個廣播通知:
????NSMetadataQueryDidFinishGatheringNotification??查詢結束收回通知;
????NSMetadataQueryDidUpdateNotification??查詢結束,進入開始更新階段收回的通知;
????ViewController.m中冊注和除解通知代碼如下:
- (void)viewDidLoad{[super viewDidLoad];//為查詢iCloud文件的變更,冊注通知[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(updateUbiquitousDocuments:)name:NSMetadataQueryDidFinishGatheringNotification object:nil];[[NSNotificationCenter defaultCenter] addObserver:selfselector:@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建創的文件。
????
????如果在iPhone、iPod?touch和iPad等iOS設備中查看,可以啟動設置應用程序,也進入到存儲間空理管中,我的iPod?touch中查看的情況。
????
????出自《iOS絡網程編與云端應用最佳實踐》作者:關東升 @tony_關東升
文章結束給大家分享下程序員的一些笑話語錄: 這年頭的互聯網真是娛樂了中國,網民們從各種各樣的“門”里鉆來鉆去,又有好多“哥”好多“帝”,值得大家品味不已……網絡經典語錄,關于IT與互聯網,經典與您分享!
轉載于:https://www.cnblogs.com/jiangu66/archive/2013/05/02/3055411.html
總結
以上是生活随笔為你收集整理的文档容器iOS网络编程-iCloud文档存储编程实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql INFORMATION_SC
- 下一篇: 明天开始新的作息时间了