私はUIManagedDocument
を使用してiCloudでファイルを管理しています。設定後NSMetadataQuery
そうのように:NSMetadataQueryカスタムファイルパッケージタイプを無視する
iCloudQuery = [[NSMetadataQuery alloc] init];
[iCloudQuery setSearchScopes:
[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
[iCloudQuery setPredicate:
[NSPredicate predicateWithFormat:@"%K like %@", NSMetadataItemFSNameKey, @"DocumentMetadata.plist"]];
私は好奇心の問題に遭遇しています - 私の文書はファイル拡張子なしで命名されたとき、または.txt
などの公共の拡張子(例:@"NewDocument2"
のため)、メタデータクエリが正しく見つけましたDocumentMetadata.plist
ファイル。しかし、私のカスタムファイル拡張子を使用すると、クエリは何も見つけられません。クエリが開始されたときや、新しい文書を追加したときなどは見つかりません。
私の質問には、おそらく実際にはディレクトリ(ファイルのパッケージは任意のレート)であることを認識していないため、カスタムファイル拡張子を持つドキュメントが表示されているようです内部にDocumentMetadata.plist
ファイルがあります。しかし、私はカスタムUTIをアプリのinfo.plist
で宣言しました。
おそらく私はUTIを間違って宣言しましたか?私はAppleのガイドライン(Document-Based App Programming Guide for iOSとUniform Type Identifiers Overview)を作成する際にそれに従ったが、何かが間違っているように思える。
編集: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でカスタムファイルパッケージを正常に使用しましたか?これはバグですか?
まだUIManagedDocumentの痛みに苦しんでいます。これは本当の答えではありませんが、UIManagedDocumentsを "Documents"フォルダの外に格納することを検討することをお勧めします。それ以外の場合、ユーザーが設定 - > iCloud - >ストレージとバックアップ - >ストレージの管理 - >に移動すると、DocumentMetadata.plistエントリが表示されます。ドキュメントと同じレベルの別のフォルダにドキュメントを置いています。次に、クエリでNSMetadataQueryUbiquitousDataScopeを使用する必要があります。ファイル拡張子が必要な場合、またはこの場合に意味があるかどうかは不明です。 –
Daniel