2012-01-04 2 views
0

Я пытаюсь реализовать поиск UITableView. Сначала я заполняю массив исторических периодов из метода DB in - (void) viewDidLoad.Проблема с NSPredicate с использованием метода numberOfRowsInSection

self.periodsArr=[dbAccsess getPeriods:subCountryID]; 
self.searchBar = [[[UISearchBar alloc]initWithFrame: 
        CGRectMake(0.0f, 0.0f, 320.0f, 44.0f)] autorelease]; 
searchBar.delegate=self; 
self.tableView.tableHeaderView = self.searchBar; 
searchBar.keyboardType=UIKeyboardTypeNumberPad; 
self.searchController = [[[UISearchDisplayController alloc] 
          initWithSearchBar:self.searchBar contentsController:self] autorelease]; 
self.searchController.searchResultsDataSource = self; 
self.searchController.searchResultsDelegate = self; 

Тогда я пытаюсь реализовать метод

- (NSInteger)tableView:(UITableView *)utableView numberOfRowsInSection:(NSInteger)section 
{ 
if(utableView==self.tableView) 
{ 
    return [self.periodsArr count]; 
} 
NSPredicate *predicate = [NSPredicate predicateWithFormat: 
          @"period beginswith[c] %@", self.searchBar.text]; 
filteredItems=[[NSMutableArray alloc]init]; 
self.filteredItems=[self.periodsArr filteredArrayUsingPredicate:predicate]; 
return filteredItems.count; 

} 

И в View Controller UISearchBarDelegate, UITableViewDataSource, UITableViewDelegate

Строки в tableCells начинают с датами, как 1789-1798. Когда я пытаюсь выполнить поиск информации, методы поиска работают только для первого номера .... например, у меня есть ячейка с информацией, начинающейся с номера 5. Когда я печатаю в строке 5 UISearchBar, метод возвращает мне запись, начинающуюся с 1. Когда я печатаю два числа, метод возвращает мне «никаких результатов». Где проблема и где я ошибся?

+0

Является ли ваш «период» экземпляром NSString? – LordTwaroog

+0

@LordTwaroog Да, это так. – NCFUSN

+1

Попробуйте отладить, если self.filteredItems содержит элементы, которые вы хотите. Кроме того, я бы переместил этот код из метода numberOfRowsInSection: в более подходящее место. Позаботьтесь о возможной утечке памяти в 'filterItems = [[NSMutableArray alloc] init];' - здесь вы не выпускаете никакого возможного предыдущего значения. – LordTwaroog

ответ

0

Ну, я решил эту проблему самостоятельно. Я был втянут в cellForRowAtIndexPath meth.

Смежные вопросы