3

MDQueryフレームワーク内でMDQuerySetSortComparatorBlockメソッドを使用して、クエリ結果リストをソートしようとしました。ただし、メソッドにパラメーターとして渡されたブロックはまったく呼び出されません。以下は、クエリ リクエストを作成するために使用しているコードの一部です。どんな助けでも大歓迎です。

queryString = [NSString stringWithFormat:@"kMDItemDisplayName == \'*a*\'cd"];
CFStringRef query = (__bridge CFStringRef)(queryString);

queryReference = MDQueryCreate(NULL, query, (__bridge CFArrayRef)([NSArray arrayWithObjects:(id)kMDItemDisplayName, nil]), NULL);

MDQuerySetSortComparatorBlock(queryReference, ^CFComparisonResult(const CFTypeRef *attrs1, const CFTypeRef *attrs2) {

    NSLog(@"Block called");
    return kCFCompareLessThan;

});

MDQuerySetSearchScope(queryReference, (__bridge CFArrayRef)([NSArray arrayWithObjects:(id)kMDQueryScopeComputer, nil]), 0);

MDQueryExecute(queryReference, kMDQueryWantsUpdates);
4

1 に答える 1

2

mdquerycreate メソッドの 4 番目のパラメーターは、並べ替えのために用意されています。結果をソートするために属性の配列を渡すことができます。4 番目のパラメーターが NULL でない場合、sortcomparator ブロックが呼び出されます。

于 2012-11-13T06:23:49.613 に答える