3

NSMetadataQueryを使用してアプリケーションのドキュメントディレクトリに保存されているいくつかのファイルにアクセスしようとしていますが、NSMetadataQueryDidFinishGatheringNotificationがアプリケーションに通知しません。私はこの質問を見つけましたが、答えはNSMetadataQueryをivarにすることでした。これは、私がすでに行ったものです。

これが私が使用しているコードです:

self.query = [[NSMetadataQuery alloc] init];
[self.query setSearchScopes:[NSArray arrayWithObject:documentsDirectoryURL]];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"%K ENDSWITH '_task'", NSMetadataItemFSNameKey];
[self.query setPredicate:pred];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinishGathering:) name:NSMetadataQueryDidFinishGatheringNotification object:self.query];

[self.query enableUpdates];

[self.query startQuery];

ご協力いただきありがとうございます!

4

1 に答える 1

6

これは、Apple のドキュメント「About File Metadata Queries」からのものです。

iOS では、iCloud 内でメタデータを検索して、ファイルに対応するファイルを見つけることができます。これは、ファイル メタデータ クエリ、NSMetadataQuery および NSMetadataItem への Objective-C インターフェイスのみを提供し、iCloud を検索する検索範囲のみをサポートします。

デスクトップとは異なり、iOS アプリケーションのサンドボックスは、メタデータ クラスを使用して検索できません。アプリケーションのサンドボックスを検索するには、NSFileManager クラスを使用して、サンドボックス ファイル システム内のファイルを再帰的にトラバースする必要があります。一致するファイルが見つかったら、必要な方法でそのファイルにアクセスできます。NSMedataItem クラスを使用して、その特定のファイルのメタデータを取得することもできます。

そのため、代わりに NSFileManager を使用する必要があります。

于 2012-06-04T04:24:40.397 に答える