В контроллере отображения поиска ищите только текущие файлы и папки, а не подпапки и файлы на 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;
}