2013-07-15 74 views
-3

我做了一個應用程序,它可以處理錄製的文件,如MP4波形等。與iCloud同步文件

我想將我的應用程序與iCloud同步,但我不知道如何。

哪種方法更好:基於文檔的鍵值對還是核心數據?

同時,我有以下問題:

  1. 我們可以刪除文件?如果是這樣,它是否被用於垃圾?
  2. 我們可以將文件移動到另一個文件夾嗎?
  3. 我們如何知道文件更改?
  4. 有沒有任何機制可以告訴我們關於應用程序關閉時發生的更改/創建/刪除?
+3

您應該首先閱讀Apple的文檔(https://developer.apple.com/icloud/documentation/)。 – Greg

+0

上述問題沒有答案! – aakpro

+0

要回答您的第一點,請在[本文檔]中向下滾動到**三種iCloud存儲**(https://developer.apple.com/library/ios/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/ Introduction.html)。 – Greg

回答

2

諮詢的iCloud存儲部分的三種在iCloud Design Guide給了我們這樣的:

的iCloud支持三種存儲。要爲您的應用選擇正確的一個(或組合),請確保您瞭解每個應用的意圖和功能。這三種iCloud存儲是:

鍵值存儲爲離散值,如偏好設置,設置和簡單的應用程序狀態。

文檔存儲用於用戶可見的基於文件的信息,如文字處理文檔,繪圖和複雜的應用程序狀態。

核心數據存儲適用於鞋盒式應用和基於服務器的多設備數據庫解決方案,適用於結構化內容。 iCloud核心數據存儲建立在文檔存儲上,並採用相同的iCloud API。

所以基本上,這取決於你想要做什麼。上述段落不言自明,但如果仍不能確定,請閱讀Designing for Key-Value Data in iCloud,Designing for Documents in iCloudDesigning for Core Data in iCloud以瞭解每個選項的功能和限制。


iCloud File Management應該爲您的其他問題提供答案。

您管理使用正常NSFileManager方法位於iCloud中的文檔存儲文件,這意味着你可以movedeletecopy文件,就像你在本地存儲。

與OS X不同,iOS 沒有垃圾箱刪除的文件被移入。如果你刪除了一個文件,它就沒了。如果你想要垃圾功能,你必須自己實現它。

This guide介紹瞭如何發現您的應用程序的iCloud的文件夾中。這裏的關鍵代碼是

[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(processFiles:) 
    name:NSMetadataQueryDidUpdateNotification 
    object:nil]; 

NSMetadataQueryDidUpdateNotification已發佈元數據查詢更新。如果讓它連續運行,每次文件在外部發生更改時都會發布,因此您可以採取適當的措施。欲瞭解更多信息,請參閱NSMetadataQuery Class Reference

我不明白你爲什麼會需要這樣做,因爲你可以得到的文件列表目前在iCloud中,當應用程序啓動,並允許用戶對其進行編輯。應該沒有理由說明你需要知道文件已經改變。但是,如果您出於某種原因確實需要這樣做,則可以在本地保存NSMetadataQuery返回的相關數據,然後在啓動應用程序時加載該文件,並將保存的列表與iCloud中的文件列表進行比較,並用它來確定在此期間發生了什麼變化。


希望此答案中的文檔鏈接數表明您的所有問題都已得到解答。

+0

非常感謝你!這是一個很大的幫助... – aakpro

+0

如果這解決了你的問題,請隨時點擊答案旁邊的勾號:) – Greg