「rmc」という名前の iCloud 対応アプリを作成しました。アプリはファイルを iCloud Drive にアップロードし、NSMetadataQuery によってメタデータを取得できるようになりました。ただし、NSMetadataQuery の結果には、APP のコンテナー内のファイルしか含まれません。 .apple.com/videos/wwdc/2015/?id=234、これはドキュメントであり、NSMetadataQuery は他の APP のコンテナー内のファイルを取得できると言われています。アプリ「Document 5」と「Cloud Lite」は、すべてのファイルを取得できます。
こちらの画像をご覧ください。アプリ「Document 5」のUIです。このアプリはiCloud Driveのルートディレクトリ情報を取得できますが、私のアプリは「rmc」フォルダ内のファイルしか取得できません。 iCloud Driveのディレクトリとファイル.「ドキュメント5」のように.誰かが私を助けて、私の質問を理解してくれることを願っています.私の英語は注ぐ.Thanks!!! これは私のコードです:
- (BOOL)getFiles
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *cloudURL = [fileManager URLForUbiquityContainerIdentifier:nil];
self.query = [[NSMetadataQuery alloc]init];
self.query.predicate = [NSPredicate predicateWithFormat:@"%K like '*'",NSMetadataItemFSNameKey]; // all
self.query.searchScopes = [NSArray arrayWithObjects:NSMetadataQueryUbiquitousDocumentsScope,NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope,nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(getFilesFinished:)
name:NSMetadataQueryDidFinishGatheringNotification
object:nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(getFilesFinished:)
name:NSMetadataQueryDidUpdateNotification
object:nil];
[self.query startQuery];
return YES;
}
このメソッドは NSMetadataQuery を使用して iCloudDrive からメタデータを取得しました。
これは、この値に関する Apple のドキュメントです: NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope アプリのコンテナー外のドキュメントを検索します。この検索では、ユーザーがドキュメント ピッカー ビュー コントローラーを使用して以前に開いた iCloud ドキュメントを見つけることができます。これにより、ユーザーが直接操作しなくても、アプリは再びドキュメントにアクセスできるようになります。結果の NSMetadataItemURLKey 属性は、セキュリティ スコープの NSURL を返します。セキュリティ スコープの URL の操作の詳細については、NSURL クラス リファレンスの「セキュリティ スコープの URL」を参照してください。