2014-01-20 123 views
2

在我的Mac應用程序中,我有一個NSMetadataQuery來觀看應用程序的iCloud目錄。NSMetadataQuery在將它們移動到iCloud後找不到文檔

  1. 呼叫[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]建立訪問iCloud的容器
  2. 開始NSMetadataQuery找到的所有文件(模式:"*")。當用戶決定從應用程序內啓用的iCloud我做的順序如下icloud的容器
  3. 現在我遍歷所有文件在本地容器和使用[fileManager setUbiquitous:YES itemAtURL:fileURL destinationURL:targetURL error:&error]

它們移動到iCloud我有兩個類型的文檔,我移動到iCloud:

  1. 實際的文件存儲爲文件包
  2. 對於每一個文檔我有一個.preview文件一樣簡單的二進制文件

我的問題是元數據查詢回報我的二進制預覽文件,但而不是我的實際文檔,直到我重新啓動我的應用程序(或從終端打開應用程序的iCloud文件夾的Finder窗口 - 在這種情況下,我的應用程序獲得所有文件的另一個查詢結果)。

那麼這是一個奇怪的緩存問題?這是因爲文檔是文件包而不是簡單的二進制文件?

我不明白爲什麼這應該是一個問題。如果我重新啓動我的應用程序查詢確實返回所有文件。

這可能是我的自定義文檔類型在Info.plist中導出的問題嗎?

回答

0

這可能是我在Info.plist中導出的自定義文檔類型爲 的問題嗎?

我想是這樣的:你描述的問題很可能是因爲你的文檔格式是一個文件包(我假設用NSFileWrapper編寫)。請記住,寫入文件時會設置軟件包位,所以如果您有其他應用程序正在寫入iCloud,可能會使問題變得更加令人困惑,因爲它不是解釋文件包,而是正確寫入

NSMetadataQuery不幸忽略的文件夾,所以除非你有正確註冊你的文件類型如捆綁在該文件寫入到iCloud的容器應用程序文件將永遠不會被彙報。

info.plist中有很多類似和可能令人困惑的設置,所以很多事情可能會出錯。我在OS X上正確註冊了我的文檔文件類型時遇到了問題,但在iOS上未能如此操作:https://stackoverflow.com/a/14993694/388412

您應該做的第一件事是去https://developer.icloud.com/#documents並查看您是否正在查看文件(正確)或文件夾(問題)。

處理您的info.plist文檔類型,直到您將文檔看作文件,然後它應該工作。

相關問題