0
Я пробовал весь день, но метод поиска Дисплей Делегат-методы не работают.Как реализовать поиск строки в словаре plist?
У меня есть табличное представление, которое загружает plist, и я пытаюсь реализовать функцию поиска.
Вот мой код
#import "TabelViewController.h"
#import "Cell.h"
@interface TabelViewController()
@property (nonatomic,copy) NSDictionary *names;
@property (nonatomic,copy) NSArray *keys;
@property (nonatomic,copy) NSArray *FIOArray;
@property (nonatomic,copy) NSMutableArray *filtredNames;
@property (nonatomic,copy) UISearchDisplayController *searchController;
@end
Метод, который корректно работать доцент. я не знаю, как правильно загружать словари из моего списка свойств осуществить поиск
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{
[filtredNames removeAllObjects];
if (searchString.length > 0) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [search] %@", self.searchBar.text];
for (NSString *key in keys){
NSArray *matches = [names[key] filteredArrayUsingPredicate:predicate];
[filtredNames addObjectsFromArray:matches];
}
}
return YES;
}
Plist структурировать
<plist version="1.0">
<dict>
<key>А</key>
<array>
<dict>
<key>ФИО</key>
<string>Аетров А.В.</string>
<key>Доклад</key>
<string>Доклад 5</string>
<key>Время</key>
<string>10:00-10:30</string>
<key>День</key>
<string>Четверг</string>
</dict>
</array>
Thx но это также доценка. Я думаю, что моя ошибка в этих строках 'NSPredicate * predicate = [NSPredicate predicateWithFormat: @ "SELF содержит [поиск]% @", self.searchBar.text]; для (ключ NSString * в ключах) { NSArray * matches = [names [key] filterArrayUsingPredicate: predicate]; [filtredNames addObjectsFromArray: matches]; } ' –
@ Анвар, просто скопируйте весь '- (BOOL) searchDisplayController:' метод из моего ответа и код, загружающий plist в словарь. его работа, я проверил его. Потому что в вашем случае и см. Код, где вы получаете значения для массива 'keys', так что если вы этого не сделаете - это не сработает! –
Я сделал это с для (клавишей ключа NSString *) { FIOArray = [names [key] valueForKey: @ "ФИО"]; NSArray * matches = [FIOArray filterArrayUsingPredicate: предикат]; [filtredNames addObjectsFromArray: matches]; извините за ваше время –