【问题标题】:Block passed as a parameter to MDQuerySetSortComparatorBlock (Spotlight API) is not getting called作为参数传递给 MDQuerySetSortComparatorBlock (Spotlight API) 的块未被调用
【发布时间】:2012-10-29 20:11:41
【问题描述】:

我尝试使用 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);

【问题讨论】:

    标签: objective-c macos cocoa spotlight nsmetadataquery


    【解决方案1】:

    mdquerycreate 方法中的第四个参数已提供用于排序目的。我们可以将一个属性数组传递给它以对结果进行排序。如果第四个参数不为 NULL,则调用 sortcomparator 块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 2020-07-09
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      相关资源
      最近更新 更多