使用numberOfRowsInSection方法的NSPredicate问题

时间:2012-01-04 19:51:01

标签: objective-c ios cocoa-touch

我正在尝试实现UITableView的搜索。首先,我从DB中填充我的历史时期数组 - (void)viewDidLoad方法。

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开头的信息。当我输入UISearchBar数字5时,该方法返回我的记录开头1.当我键入两个数字时,方法会返回“无结果”。哪里出了问题,哪里出错了?

1 个答案:

答案 0 :(得分:0)

好吧,我自己解决了这个问题。我被搞砸了cellForRowAtIndexPath meth。