我正在构建一个NSmetaDataQuery来查找不可见的文件夹(比如“.myInvisibleFolder”)。
不幸的是,聚光灯似乎没有找到以“。”开头的文件夹,即使特别包含在谓词中也是如此。
哪些有效且无效
搜索任何不可见的文件名都可以。
搜索内容有效(kMDItemTextContent)。
没有以“。”开头的文件。永远被发现。始终返回0结果。
作为测试,在Finder中搜索不可见的内容。
我做错了什么?还有另一种方法可以找到隐形文件夹吗?
代码:
- (void)searchForMyInvisableFolders{
self.query = [[[NSMetadataQuery alloc] init] autorelease];
// To watch results send by the query, add an observer to the NSNotificationCenter
NSNotificationCenter *nf = [NSNotificationCenter defaultCenter];
[nf addObserver:self selector:@selector(queryNote:) name:nil object:self.query];
// Sort results by file name
[self.query setSortDescriptors:[NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:(id)kMDItemFSName ascending:YES] autorelease]]];
[self.query setDelegate:self];
//Create a predicate to search for file name
NSPredicate* predicate = [NSPredicate predicateWithFormat:@" (kMDItemFSName == '.myInvisibleFolder')"];
//Create a predicate to search for invisible files
NSPredicate* invisablePredicate = [NSPredicate predicateWithFormat:@"kMDItemFSInvisible == YES"];
//Compound predicate
NSPredicate* compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:predicate, invisiblePredicate, nil]];
// Set it to the query.
[self.query setPredicate:compoundPredicate];
// Start it.
[self.query startQuery];
}
答案 0 :(得分:2)
如果我将第一个谓词更改为:
,您的代码对我来说非常适合[NSPredicate predicateWithFormat:@" (kMDItemFSName == '.DS_Store')"];
您的隐形文件夹是否真的被称为“.myInvisableFolder”(请注意您的拼写错误)?