1

我正在构建一个 NSmetaDataQuery 来查找不可见的文件夹(如“.myInvisibleFolder”)。

不幸的是,Spotlight 似乎没有定位以“.”开头的文件夹,即使在谓词中特别包含时也是如此。

什么有效,什么无效

搜索任何不可见的文件名都有效。

搜索内容有效 (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]; 

}   
4

1 回答 1

2

如果我将第一个谓词更改为:

[NSPredicate predicateWithFormat:@" (kMDItemFSName == '.DS_Store')"];

您的隐形文件夹是否真的称为“.myInvisableFolder”(注意您的隐形拼写错误)?

于 2009-09-17T23:35:40.760 回答