天天看點

iOS網絡程式設計-iCloud文檔存儲程式設計執行個體

icloud文檔存儲程式設計相對鍵值資料存儲而言比較複雜,涉及到自定義文檔類、獲得icloud文檔目錄、查找ubiquity容器中的文檔、儲存文檔和解決文檔沖突等内容。

執行個體:icloud文檔存儲程式設計設計

執行個體介紹一下icloud文檔存儲程式設計過程,畫面中有一個文本框和一個按鈕控件,在裝置1輸入内容,點選“儲存資料”按鈕,将資料儲存icloud伺服器。右圖是裝置2畫面,過幾秒鐘後裝置2上會讀取icloud伺服器端資料,并顯示在文本框中。

iOS網絡程式設計-iCloud文檔存儲程式設計執行個體

配置xcode工程

編寫icloud文檔存儲編應用程式也需要在xcode工程中進行一些配置,選擇tagets→mynotes→summary→entitlements

iOS網絡程式設計-iCloud文檔存儲程式設計執行個體

在圖中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的代碼如下:

獲得icloud文檔目錄

icloud文檔目錄是指在ubiquity容器下的document目錄,是以獲得了ubiquity容器的根目錄,就可以獲得的icloud文檔目錄了。

viewcontroller.m中的 ubiquitousdocumentsurl方法可以icloud文檔目錄:

查找ubiquity容器中的文檔

獲得icloud文檔目錄後,我們需要找到容器中的檔案。查詢容器中的檔案需要注冊兩個廣播通知:

nsmetadataquerydidfinishgatheringnotification  查詢結束發出通知;

nsmetadataquerydidupdatenotification  查詢結束,進入開始更新階段發出的通知;

viewcontroller.m中注冊和解除通知代碼如下:

儲存文檔 

儲存文檔很簡單,它是在viewcontroller.m中的 saveclick:方法處理的,saveclick:方法是點選按鈕時候觸發:

儲存成功之後我們可以在其它裝置上看看是否icloud中已經有abc.txt文檔了。如果使用mac os x系統電腦,我們可以在“系統偏好設定”中打開icloud對話框,點選“管理”按鈕可以打開icloud空間管理對話框,其中的mynotes是我應用名,右邊的abc.txt建立的檔案。

iOS網絡程式設計-iCloud文檔存儲程式設計執行個體

如果在iphone、ipod touch和ipad等ios裝置中檢視,可以啟動設定應用程式,也進入到存儲空間管理中,我的ipod touch中檢視的情況。

iOS網絡程式設計-iCloud文檔存儲程式設計執行個體