gpt4 book ai didi

cocoa - NSMetadataQuery 找不到 Lion、Mountain Lion 或 Mavericks 中的文件

转载 作者:行者123 更新时间:2023-12-03 17:39:51 25 4
gpt4 key购买 nike

如果您创建一个普通项目并将其作为您的应用程序委托(delegate)的实现:

@interface TESTAppDelegate ()
@property (nonatomic, strong) NSMetadataQuery *query;
@end

@implementation TESTAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(searchProgressed:) name:NSMetadataQueryGatheringProgressNotification object:nil];

NSMutableArray *predicates = [@[] mutableCopy];
#define add(format, ...) { \
[predicates addObject:[NSPredicate predicateWithFormat:format, ##__VA_ARGS__]]; \
}

//Toggle which of these lines are commented to experiment with breaking the query
//add(@"kMDItemKind like[c] %@", @"*"); //Works
//add(@"(kMDItemContentType != 'com.apple.mail.emlx.part')"); //Works
//add(@"(kMDItemContentType == 'public.data')"); //Works
//add(@"kMDItemFSName like[c] %@", @"*"); //DOES NOT WORK
add(@"kMDItemFSName like[c] %@", @"*Nashville*"); //works...

self.query = [[NSMetadataQuery alloc] init];
[_query setPredicate:predicates.count > 1? [NSCompoundPredicate andPredicateWithSubpredicates:predicates] : predicates.lastObject];
[_query setSearchScopes:@[[@"~/Downloads" stringByExpandingTildeInPath]]];
NSLog(@"Query %@", [_query startQuery]? @"started" : @"could NOT start!");
}

- (void)searchProgressed:(NSNotification *)note
{
NSLog(@"searchProgressed: %li", _query.resultCount);
}

@end

您应该能够确认 NSMetadataQuery“最近”引入(后 Lion)的高度异常行为:它显然不再起作用。

如果您按原样运行应用程序,它应该记录类似 “searchProgressed 1204” 的内容,这意味着查询找到了结果。但是,如果您在注释掉其他谓词后运行它,它什么也找不到。

我尝试了该行的许多变体,包括通配符或 %K 占位符的各种表述,将 LIKE[c] 占位符更改为其他形式,当然,还可以使用 NSMetadataItemFSNameKeyNSMetadataItemURLKeykMDItemContentType 等。 除了上面那个最简单的情况之外,什么都不起作用

我一定错过了 NSMetadataQuery 的一些重要内容,我之前广泛使用它并取得了巨大成功,否则每个人都会评论它是多么无用。

最佳答案

我只是猜测,希望这不会违反 StackOverflow 的规则:

我想知道苹果是否不希望使用 Spotlight 来完整地列出目录的内容——这可能是一种效率很低的方法——所以他们过滤掉了“过于广泛”的查询。如果将“”更改为其他内容,例如“F”,它会起作用吗?

‘-startQuery’返回一个 BOOL,你看到它返回了什么吗?

关于cocoa - NSMetadataQuery 找不到 Lion、Mountain Lion 或 Mavericks 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21055777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com