sを使用UIManagedDocument
してiCloudのファイルを管理しています。NSMetadataQuery
そのように設定した後:
iCloudQuery = [[NSMetadataQuery alloc] init];
[iCloudQuery setSearchScopes:
[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
[iCloudQuery setPredicate:
[NSPredicate predicateWithFormat:@"%K like %@", NSMetadataItemFSNameKey, @"DocumentMetadata.plist"]];
奇妙な問題が発生しています。ドキュメントにファイル拡張子(たとえば@"NewDocument2"
)やのようなパブリック拡張子を付けずに名前を.txt
付けると、メタデータクエリがDocumentMetadata.plist
ファイルを正しく検出します。ただし、カスタムファイル拡張子を使用すると、クエリで何も検出されません...クエリの開始時や新しいドキュメントの追加時ではありません。
クエリはおそらくカスタムファイル拡張子を持つ私のドキュメントを見ていて、それが実際にはディレクトリ(とにかくファイルパッケージ)であることを認識していないように思われるので、DocumentMetadata.plist
ファイルを見つけるために内部を調べません。ただし、アプリのでカスタムUTIを宣言しましたinfo.plist
。
おそらく私は自分のUTIを間違って宣言しましたか?Appleのガイドライン( iOSおよびUniform Type Identifiersのドキュメントベースのアプリプログラミングガイドの概要)に従って作成しましたが、何かが間違っているようです。
編集:の「エクスポートされたUTI」の下でinfo.plist
、私のタイプは「com.apple.package」に準拠するように設定されています。
編集: 私はまだこの問題に苦労しています。私は今のところファイル拡張子を使わないことでそれを回避しています。
カスタムファイル拡張子を使用する場合、iCloudメタデータクエリの結果を処理しており、DocumentMetadata.plist
ファイルは間違いなくファイルパッケージ内にありますが、メタデータクエリはそれを認識できません。クエリ結果を列挙すると、以下がログに出力されます。
<iCloud Container URL>/Documents/
<iCloud Container URL>/Documents/New%20Document.spdoc/
<iCloud Container URL>/Documents/New%20Document.spdoc/DocumentMetadata.plist
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20<AppName>%202)/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20<AppName>)/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/_EXTERNAL_DATA/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/persistentStore
(「CoreDataLogs」ディレクトリにも多数のファイルがありますが、簡潔にするためにここでは示しませんでした)。
この問題は、ファイルパッケージUTIを誤って作成したことに関係しているとしか思えません。他の誰かがiCloudでカスタムファイルパッケージをうまく使用しましたか?これはバグですか?