3 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
我只是重新閱讀了文檔,看來(lái)我的一般方法是錯(cuò)誤的。我應(yīng)該首先在沙箱中創(chuàng)建文件,然后將其移動(dòng)到云中。換句話說(shuō),Apple似乎建議我始終保持同一個(gè)文件的三個(gè)版本:一個(gè)位于我的應(yīng)用程序目錄中,一個(gè)位于設(shè)備的iCloud demon目錄中(如果脫機(jī)也可以訪問(wèn)),另一個(gè)云端:
應(yīng)用程序使用與本地文件和目錄相同的技術(shù)來(lái)管理iCloud中的文件和目錄。iCloud中的文件和目錄仍然只是文件和目錄。您可以打開(kāi)它們,創(chuàng)建它們,移動(dòng)它們,復(fù)制它們,對(duì)其進(jìn)行讀寫,刪除它們或您可能想要執(zhí)行的任何其他操作。本地文件和目錄與iCloud文件和目錄之間的唯一區(qū)別是用于訪問(wèn)它們的URL。iCloud文件和目錄的URL相對(duì)于相應(yīng)的iCloud容器目錄,而不是相對(duì)于應(yīng)用程序沙箱的URL。
要將文件或目錄移動(dòng)到iCloud:
在應(yīng)用程序沙箱中本地創(chuàng)建文件或目錄。在使用時(shí),文件或目錄必須由文件演示者(例如UIDocument對(duì)象)管理。
使用URLForUbiquityContainerIdentifier:方法檢索要在其中存儲(chǔ)該項(xiàng)目的iCloud容器目錄的URL。使用容器目錄URL構(gòu)建新的URL,該URL指定該項(xiàng)目在iCloud中的位置。調(diào)用NSFileManager的setUbiquitous:itemAtURL:destinationURL:error:方法將項(xiàng)目移動(dòng)到iCloud。永遠(yuǎn)不要從應(yīng)用程序的主線程調(diào)用此方法;這樣做可能會(huì)長(zhǎng)時(shí)間阻塞主線程,或者導(dǎo)致應(yīng)用程序自己的文件提交者之一陷入僵局。當(dāng)您將文件或目錄移動(dòng)到iCloud時(shí),系統(tǒng)會(huì)將該項(xiàng)從應(yīng)用程序沙箱中復(fù)制到私有本地目錄中,以便可以由iCloud守護(hù)程序進(jìn)行監(jiān)視。即使該文件不再位于沙箱中,您的應(yīng)用仍然可以完全訪問(wèn)它。盡管該文件的副本仍保留在當(dāng)前設(shè)備的本地,但該文件也將發(fā)送到iCloud,以便可以將其分發(fā)到其他設(shè)備。iCloud守護(hù)程序處理確保本地副本相同的所有工作。因此,從您的應(yīng)用程序角度來(lái)看,文件僅位于iCloud中。
您必須使用文件協(xié)調(diào)器對(duì)象對(duì)iCloud中的文件或目錄進(jìn)行所有更改。這些更改包括移動(dòng),刪除,復(fù)制或重命名項(xiàng)目。文件協(xié)調(diào)器確保iCloud守護(hù)程序不會(huì)同時(shí)更改文件或目錄,并確保將您所做的更改通知其他相關(guān)方。
但是,如果您深入研究有關(guān)setUbiquitous的文檔,則會(huì)發(fā)現(xiàn):
使用此方法將文件從當(dāng)前位置移動(dòng)到iCloud。對(duì)于位于應(yīng)用程序沙箱中的文件,這涉及從沙箱目錄中物理刪除文件。(系統(tǒng)擴(kuò)展了應(yīng)用程序的沙箱特權(quán),使其可以訪問(wèn)移動(dòng)到iCloud的文件。)您還可以使用此方法將文件移出iCloud并移回本地目錄。
因此,這似乎意味著文件/目錄將從本地沙箱中刪除,并移至云中。

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
我一直在使用您的示例,我喜歡它來(lái)幫助我掌握iCloud的基礎(chǔ)知識(shí)。現(xiàn)在,我正在為您自己的應(yīng)用程序解決您的問(wèn)題,該應(yīng)用程序必須使用本地存儲(chǔ)的內(nèi)容來(lái)支持該應(yīng)用程序的現(xiàn)有用戶,就我所知,這些內(nèi)容可能會(huì)或可能不會(huì)使用iCloud創(chuàng)建這些情況:
情況:
新的用戶
有icloud-在icloud中創(chuàng)建文檔
沒(méi)有icloud-在本地創(chuàng)建文檔
現(xiàn)有用戶
剛剛刪除-將以前的icloud文檔遷移到本地
不只是刪除-將文檔打開(kāi)/保存到本地
剛剛添加-將本地文檔遷移到icloud
不只是添加-將文檔打開(kāi)/保存到icloud
有icloud
沒(méi)有icloud
如果有人刪除了iCloud,則對(duì)普遍存在的URL的調(diào)用不會(huì)返回nil嗎?如果是這種情況,我該如何將文檔遷移回本地存儲(chǔ)?我現(xiàn)在將創(chuàng)建一個(gè)用戶偏好設(shè)置,但似乎有些解決方法。
我覺(jué)得我這里缺少明顯的東西,所以如果有人可以看到它,請(qǐng)發(fā)出提示。
- 3 回答
- 0 關(guān)注
- 730 瀏覽
添加回答
舉報(bào)