2013-07-01 3 views
0

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

я пишу два способа, чтобы получить число строк и имя клеток:

-(int) dammiNumeroCercati:(NSString *)searchBar 
{ 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nome CONTAINS [cd] %@", searchBar]; 

    NSArray*arra = [Ricetta MR_findAllSortedBy:@"nome" ascending:YES withPredicate:predicate]; 


    return arra.count; 
} 
-(NSString*) dammiNomeRicettaCercata:(NSString *)searchBar mostrataNellaCella: (int) cella 
{ 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nome CONTAINS [cd] %@", searchBar]; 

    NSArray *arra = [Ricetta MR_findAllSortedBy:@"nome" ascending:YES withPredicate:predicate]; 
    Ricetta*ctn = arra[cella]; 

    return [NSString stringWithFormat:@"%@", ctn.nome]; 
} 

тогда я называть этот метод внутри numberOfRowsInSection: и cellForRowAtIndexPath: внутри если цикл:

if (self.mySearchBar.isFirstResponder){ 

// the above methods 

} else { 
// the normals methods to have all the data 
} 

Кто-нибудь знает, где я ошибаюсь, или если я пропущу что-то?

+0

В чем проблема? и как вы называете вышеуказанные методы? как какие аргументы проходят? – govi

+0

Даже если это сработало: вызов «MR_findAllSortedBy» снова и снова крайне неэффективен. Вы должны посмотреть NSFetchedResultsController. –

+0

@ govi Проблема в том, что панель поиска не работает – Totka

ответ

0

searchBar обычно UISearchBar, а не строка.

Вы должны использовать searchBar.text и обработать это в своих методах.

Кроме того, в методах источника данных таблицы view вы должны убедиться, что представление таблицы вызывает обратный вызов, а затем возвращает правильную строку count/string. Обычно это проверяется путем сравнения указателей с двумя таблицами (исходное представление таблицы и таблица результатов поиска).

-(NSUInteger)tableView:(UITableView*)tableView 
     numberOfRowsInSection:(NSUInteger)section { 

    if (tableView == _tableView) { 
     // return the usual row count 
    } 
    return [self dammiNumeroCercati:_searchBar.text]; 
}