Мое приложение считывает данные из файла Plist и отображения данных в UITableViewПоиск в массиве (из списка свойств со словарями) с Fast перечислению или NSPredicate
мой PLIST Пример:
<array>
<dict>
<key>name</key>
<string>One</string>
<key>value</key>
<string>1</string>
</dict>
<dict>
<key>name</key>
<string>Two</string>
<key>value</key>
<string>2</string>
</dict>
<dict>
<key>name</key>
<string>Three</string>
<key>value</key>
<string>3</string>
</dict>
<dict>
<key>name</key>
<string>Four</string>
<key>value</key>
<string>4</string>
</dict>
<dict>
<key>name</key>
<string>Five</string>
<key>value</key>
<string>5</string>
</dict>
<dict>
<key>name</key>
<string>Six</string>
<key>value</key>
<string>6</string>
</dict>
</array
Все теперь работает хорошо. Все отображается в моем TableView с правильными подробными ячейками. Я показываю значение в detailTextLabel и имя в TextLabel.
if (isSearching==true) {
cell.textLabel.text = [searchArray objectAtIndex:indexPath.row];
//How to include the key "value" from this non-dictionary Array?
return cell;
}
cell.textLabel.text = [[mainArray objectAtIndex:indexPath.row] objectForKey:@"name"];
cell.detailTextLabel.text = [[mainArray objectAtIndex:indexPath.row] objectForKey:@"value"];
и numbersOfRowsInSection конечно:
if (isSearching) {
return [searchArray count];
}
return [IDarray count];
Я использую это, чтобы получить массив из списка свойств:
NSMutableArray *mainArray = [[NSMutableArray alloc] initWithContentsOfFile:path-to-plist-file];
но я хочу добавить UISearchBar искать через мои данные (массив).
Я смотрел и читал учебники, но я не могу заставить его работать с Fast Enumeration или NSPredicate, больше альтернатив?
Потому что я читаю данные из plist со многими словарями?
до сих пор я испытал это без успеха:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if (searchText.length==0) {
isSearching = false;
}
else {
isSearching=true;
searchArray = [[NSArray alloc]init];
NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF contains [search] %@", searchText];
searchArray = [mainArray filteredArrayUsingPredicate:pre];
}
[tableView reloadData];
}
Это покажет «никаких результатов» при поиске, а иногда это не приведет к краху.
Я также протестировал:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if (searchText.length==0) {
isSearching = false;
}
else {
isSearching=true;
searchArray = [[NSArray alloc]init];
for (NSString *str in mainArray) {
NSRange searchRange = [str rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (searchRange.location !=NSNotFound) {
[searchArray addObject:str];
}
}
[tableView reloadData];
}
не работает ...
Как я могу реализовать панель поиска для поиска в данных? и как я могу отобразить значение и имя в контроллере дисплея поиска?