【问题标题】:In search display controller, search only current files and folder not subfolder and files in iPad在搜索显示控制器中,仅搜索当前文件和文件夹,而不是 iPad 中的子文件夹和文件
【发布时间】:2014-06-26 01:15:26
【问题描述】:

我正在开发一个文件管理器应用程序,如果用户搜索关键字,那么在给定路径中可用的所有文件和文件夹,文件名应该列在具有该搜索关键字的表视图中。搜索必须与 finder 中的特定文件夹相同。

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

例如
LocalFolder

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

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

【问题讨论】:

    标签: xcode nsarray nsfilemanager nsenumerator


    【解决方案1】:

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

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

    查看documentation了解更多信息。

    【讨论】:

    • 请给我另一个解决方案,因为我没有得到确切的答案。缺少一些我不知道从所有文件和文件夹中搜索字符的东西。
    • 缺少什么? subpathsOfDirectoryAtPath 的结果是 nil 吗?你确定searchPath 是对的吗?请更具体。
    • Leftbar 有本地文件夹,其中包含所有文件并显示在右侧的 tableview 上。搜索 funn 搜索任何单词/字符,然后显示 files/folder.NSMutableArray *array = [NSMutableArray arrayWithArray:[fileManager subpathsOfDirectoryAtPath:strTemp错误:无]];我正在使用这个。现在,在 tableview 中显示所有文件和子文件夹(例如 folder1、folder1/f1.txt)。是否可以在 tableview 中不显示所有文件和文件夹以及子文件夹和子文件?但它应该在您搜索特定文件时显示,并且应该从任何子文件夹中获取。有什么想法吗?
    • 好的,我不确定我是否理解这一点,但我会试一试。如果您想在一个目录中显示文件和文件夹而不显示其子目录内容,请使用contentsOfDirectoryAtPath。如果要搜索一个目录及其子目录,请在搜索时使用subpathsOfDirectoryAtPath。除此之外,如果没有看到您的项目,我真的无能为力。
    【解决方案2】:

    谢谢...是的,我正在使用contentsOfDirectoryAtPath,现在,我在getfilesandfolder 的功能中检查了subpathsOfDirectoryAtPath。太奇妙了。显示带有子文件夹和文件的路径。但问题是,当我搜索任何单词或字符时,不显示包含文件和文件夹(未找到结果)。使用此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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 2023-04-05
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      相关资源
      最近更新 更多