5

ファイルのパスで文字列を検索するSpotlightクエリを作成しようとしています(ファイルの名前または含まれているフォルダーの名前のいずれかに一致させたい)。

NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat: @"kMDItemPath like[wcd] $SEARCH";
[query setPredicate: 
    [predicateTemplate predicateWithSubstitutionVariables:
        [NSDictionary dictionaryWithObject:searchingFor forKey:@"SEARCH"]
    ]
];
[query startQuery];

次の場合でも、これは常に0の結果を返します。

NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat: @"kMDItemDisplayName in[wcd] $SEARCH";

1つ以上の結果を返します。私はこれをMacOSX10.5.8でテストしています。

4

1 に答える 1

11

ドキュメントを引用します。

kMDItemPath

ファイルへの完全なパス。この属性のこの値は取得できますが、クエリで使用したり、検索結果を並べ替えたりすることはできません。

リンク

つまり、この属性kMDItemPathは MDItem または NSMetadataItem でのみ使用して、既に見つかったアイテムのパスを取得できます。ファイルを検索するために指定したクエリ述語内で、MDQuery または NSMetadataQuery と一緒に使用することはできません。

于 2009-08-27T15:56:02.257 に答える