在搜索显示控制器中,仅搜索当前文件和文件夹而不是iPad中的子文件夹和文件

时间:2014-05-08 14:51:21

标签: xcode nsarray nsfilemanager nsenumerator

我正在处理文件管理器应用程序,如果用户搜索关键字然后在给定路径上可用的所有文件和文件夹,文件名应列在具有该搜索关键字的表视图中。搜索必须与特定文件夹的查找器中的搜索相同。

问题是 - 当我搜索任何关键字时,它只显示当前文件夹或在表视图中但我想显示所有子文件夹文件的文件。

E.g
    的 LocalFolder

         ->>      **folder1**
                     -->f1.txt
                     -->f2.png
                     -->folder11
         ->>      **folder2**  

在这种情况下,当您搜索某些内容时,它会显示当前文件夹/文件,例如folder1和folder2。我也需要找到子目录。

2 个答案:

答案 0 :(得分:0)

我不确定您是如何进行文件搜索的,但我假设您在从搜索目录中获取路径时使用contentsOfDirectoryAtPath。使用subpathsOfDirectoryAtPath代替contentsOfDirectoryAtPath,它会重新包含所有包含的子目录的路径。

NSArray * contents = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath: searchPath error:nil]; 
// Now make your search.

查看documentation了解更多信息。

答案 1 :(得分:0)

谢谢......是的,我正在使用contentsOfDirectoryAtPath,现在,我在subpathsOfDirectoryAtPath的功能中使用getfilesandfolder进行了检查。太棒了。显示子文件夹和文件的路径。但问题是,当我搜索任何单词或字符时,则不显示包含文件和文件夹(结果未找到)。使用此subpathsOfDirectoryAtPath它将显示所有文件和带有子路径名的文件夹。

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{

    [marrFiles removeAllObjects];

    for (NSDictionary *tempDict in marrTmp)

  {
        NSString *tempStr = @"";

     if ([tempDict valueForKey:@"Folder"])
        {
            tempStr = [tempDict valueForKey:@"Folder"];
        }else{
            tempStr = [tempDict valueForKey:@"File"];
        }


       if ([tempStr rangeOfString:searchString].location != NSNotFound) {
            [marrFiles addObject:tempDict];
        }
    }

    return YES;
}