0

Objective-Cでは、特定のユーザーのDocumentsフォルダーを検索するためのクエリのNSMetaDataQueryとを設定しています。setSearchScope:検索は機能しますが、ディレクトリツリーを下に戻ることはなく、Documentsフォルダを検索するだけです。
私はワイルドカードを試しましたが、喜びはありません。

これが基本的に私が試みたものであり、Documentsディレクトリの下を検索しないことを除いて機能します。

query = [[NSMetadataQuery alloc] init];
[query setSearchScopes:[NSArray arrayWithObjects:@"/Users/username/Documents/",nil]];
[query setPredicate:[NSPredicate predicateWithFormat:@"(kMDItemFSContentChangeDate >= '$time.this_week')"]];
[query startQuery];
4

2 に答える 2

1

問題は NSPredicate フォーマット文字列にあると思います。(私はこれを書くつもりでした!) 基本的に$time.this_week、Spotlight クエリではうまく機能しますが、NSPredicate 文字列としては機能しません。実際に NSDate オブジェクトを作成し、それを次のようなクエリ文字列に渡す必要があります

[query setPredicate:[NSPredicate predicateWithFormat:@"(kMDItemFSContentChangeDate <= %@)", [NSDate date]]];

参照用の関連リンクは次のとおりです。

NSPredicate と Spotlight クエリ文字列の比較
Spotlight クエリ式の構文
述語の書式文字列の構文

于 2010-11-11T03:08:04.440 に答える
0

あなたの問題は、の末尾のスラッシュである可能性があると思います/Users/username/Documents/。Objective-C でパスを処理する場合、フレームワークは末尾にスラッシュを付けません。それを脱ぐことは役に立ちますか?

于 2010-11-10T18:21:46.407 に答える