文档容器iOS网络编程-iCloud文档存储编程实例
在本文中,我們主要紹介文檔容器的容內(nèi),自我感覺(jué)有個(gè)不錯(cuò)的建議和大家分享下
????iCloud文檔存儲(chǔ)程編對(duì)相鍵值據(jù)數(shù)存儲(chǔ)而言比較復(fù)雜,涉及到自定義文檔類(lèi)、取得iCloud文檔錄目、找查Ubiquity容器中的文檔、保存文檔和決解文檔沖突等容內(nèi)。
????
????實(shí)例:iCloud文檔存儲(chǔ)程編設(shè)計(jì)
????實(shí)例紹介一下iCloud文檔存儲(chǔ)程編進(jìn)程,畫(huà)面中有一個(gè)文本框和一個(gè)按鈕控件,在設(shè)備1入輸容內(nèi),點(diǎn)擊“存保據(jù)數(shù)”按鈕,將據(jù)數(shù)存保iCloud服務(wù)器。右圖是設(shè)備2畫(huà)面,過(guò)幾秒鐘后設(shè)備2上會(huì)取讀iCloud服務(wù)器端據(jù)數(shù),并示顯在文本框中。
????
????配置Xcode程工
????編寫(xiě)iCloud文檔存儲(chǔ)編應(yīng)用程序也須要在Xcode程工中進(jìn)行一些配置,選擇TAGETS→MyNotes→Summary→Entitlements
????
????在圖中Ubiquity?Contrainers加添com.51work6.MyNotes,這是Ubiquity容器標(biāo)識(shí),可以有多個(gè)Ubiquity容器標(biāo)識(shí),這個(gè)容器標(biāo)識(shí)代表著不同的錄目。com.51work6.MyNotes代表錄目如下所示:
????/var/mobile/Library/Mobile?Documents/98Z3R5XU29~com~51work6~MyNotes/
????其中的98Z3R5XU29是在iOS開(kāi)發(fā)者配置門(mén)戶(hù)網(wǎng)站建創(chuàng)App?ID時(shí)候生成的,它被稱(chēng)為Team?ID。
????如果應(yīng)用中沒(méi)有用使iCloud鍵值據(jù)數(shù)存儲(chǔ)key-Value?Store可以不必配置。
????自定義文檔類(lèi)
????我們須要自己裝封一個(gè)文檔類(lèi),它繼承抽象類(lèi)UIDocument,而UIDocument實(shí)現(xiàn)NSFilePresenter協(xié)議。實(shí)現(xiàn)NSFilePresenter協(xié)議的類(lèi),它所代表的文件和錄目可以被查看和編輯,這些NSFilePresenter實(shí)現(xiàn)類(lèi)與文件協(xié)調(diào)者類(lèi)NSFileCoordinator結(jié)合用使,可以協(xié)調(diào)理管文件或錄目。
????這個(gè)類(lèi)我們命名為MyCloudDocument,?MyCloudDocument的代碼如下:
每日一道理記不清有多少個(gè)夜晚,在我翻閱紙張的指間滑落;記不清有多少支蠟燭,在我的凝視中化為灰燼。逝者如斯,我時(shí)時(shí)刻刻會(huì)聽(tīng)見(jiàn)自己對(duì)生命承諾的余音,感到歲月的流轉(zhuǎn)在漸漸稀釋我的年少無(wú)知,我愿自己是一只上足了發(fā)條的時(shí)鐘,在晝夜不停的流轉(zhuǎn)中留下自己充實(shí)的每一刻。
#import <UIKit/UIKit.h>@interface MyCloudDocument : UIDocument ①@property (strong, nonatomic) NSString *contents;@end#import ”MyCloudDocument.h”@implementation MyCloudDocument//加載據(jù)數(shù)- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError ②{if ([contents length] > 0){self.contents = [[NSString alloc] initWithData:contents encoding:NSUTF8StringEncoding]; ③}return YES;}//存保據(jù)數(shù)- (id)contentsForType:(NSString *)typeName error:(NSError **)outError ④{return [self.contents dataUsingEncoding:NSUTF8StringEncoding]; ⑤}@end
????取得iCloud文檔錄目
????iCloud文檔錄目是指在Ubiquity容器下的Document錄目,因此取得了Ubiquity容器的根錄目,以可就取得的iCloud文檔錄目了。
????ViewController.m中的?ubiquitousDocumentsURL方法可以iCloud文檔錄目:
//求請(qǐng)地本Ubiquity容器,從容器中取得Document錄目URL- (NSURL *)ubiquitousDocumentsURL {NSFileManager* fileManager = [NSFileManager defaultManager]; ①NSURL* containerURL = [fileManagerURLForUbiquityContainerIdentifier:@"98Z3R5XU29.com.51work6.MyNotes"]; ②containerURL = [containerURL URLByAppendingPathComponent:@"Documents"]; ③return containerURL;}????找查Ubiquity容器中的文檔
????取得iCloud文檔錄目后,我們須要找到容器中的文件。查詢(xún)?nèi)萜髦械奈募氁獌?cè)注兩個(gè)廣播通知:
????NSMetadataQueryDidFinishGatheringNotification??查詢(xún)結(jié)束收回通知;
????NSMetadataQueryDidUpdateNotification??查詢(xún)結(jié)束,進(jìn)入開(kāi)始更新階段收回的通知;
????ViewController.m中冊(cè)注和除解通知代碼如下:
- (void)viewDidLoad{[super viewDidLoad];//為查詢(xún)iCloud文件的變更,冊(cè)注通知[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(updateUbiquitousDocuments:)name:NSMetadataQueryDidFinishGatheringNotification object:nil];[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(updateUbiquitousDocuments:)name:NSMetadataQueryDidUpdateNotification object:nil];//查詢(xún)iCloud文件的變更[self searchFilesOniCloud];}- (void)didReceiveMemoryWarning{[super didReceiveMemoryWarning];[[NSNotificationCenter defaultCenter] removeObserver:self];}?
????存保文檔?
????存保文檔很簡(jiǎn)單,它是在ViewController.m中的?saveClick:方法理處的,saveClick:方法是點(diǎn)擊按鈕時(shí)候觸發(fā):
- (IBAction)saveClick:(id)sender {_myCloudDocument.contents = _txtContent.text;[_myCloudDocument updateChangeCount:UIDocumentChangeDone];[_txtContent resignFirstResponder];}????存保勝利以后我們可以在其它設(shè)備上看看是不是iCloud中已經(jīng)有abc.txt文檔了。如果用使Mac?OS?X系統(tǒng)腦電,我們可以在“系統(tǒng)偏好設(shè)置”中打開(kāi)iCloud對(duì)話(huà)框,點(diǎn)擊“理管”按鈕可以打開(kāi)iCloud間空理管對(duì)話(huà)框,其中的MyNotes是我應(yīng)用名,右側(cè)的abc.txt建創(chuàng)的文件。
????
????如果在iPhone、iPod?touch和iPad等iOS設(shè)備中查看,可以啟動(dòng)設(shè)置應(yīng)用程序,也進(jìn)入到存儲(chǔ)間空理管中,我的iPod?touch中查看的情況。
????
????出自《iOS絡(luò)網(wǎng)程編與云端應(yīng)用最佳實(shí)踐》作者:關(guān)東升 @tony_關(guān)東升
文章結(jié)束給大家分享下程序員的一些笑話(huà)語(yǔ)錄: 這年頭的互聯(lián)網(wǎng)真是娛樂(lè)了中國(guó),網(wǎng)民們從各種各樣的“門(mén)”里鉆來(lái)鉆去,又有好多“哥”好多“帝”,值得大家品味不已……網(wǎng)絡(luò)經(jīng)典語(yǔ)錄,關(guān)于IT與互聯(lián)網(wǎng),經(jīng)典與您分享!
轉(zhuǎn)載于:https://www.cnblogs.com/jiangu66/archive/2013/05/02/3055411.html
總結(jié)
以上是生活随笔為你收集整理的文档容器iOS网络编程-iCloud文档存储编程实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql INFORMATION_SC
- 下一篇: 面向对象编程学习5月7日-5月23日 网