В контроллере отображения поиска ищите только текущие файлы и папки, а не подпапки и файлы на iPad

Я работаю над приложением File Manager, если пользователь выполняет поиск по ключевому слову, то все файлы и папки, доступные по указанному пути, должны указывать имя файла в табличном представлении, в котором есть это ключевое слово для поиска. Поиск должен быть таким же, как в искателе для определенной папки.

Проблема в том, что при поиске по любому ключевому слову отображается только текущая папка или файлы, которые в табличном представлении, но я также хочу отображать все файлы подпапок.

Например
LocalFolder

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

В этом случае при поиске чего-либо отображается текущая папка / файлы, такие как folder1 и folder2. Мне нужно найти в подкаталоге также.

2 ответа

Я не уверен, как вы сделали поиск файлов, но я предполагаю, что вы используете contentsOfDirectoryAtPath при получении путей из каталога поиска. использование subpathsOfDirectoryAtPath вместо contentsOfDirectoryAtPath, он перезапускает пути всех содержащихся в нем подкаталогов.

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

Смотрите документацию для получения дополнительной информации.

Спасибо... да я пользуюсь 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;
}
Другие вопросы по тегам