0
我想实现搜索UITableView。首先,我在 - (void)viewDidLoad方法中填入数据库历史时期的数组。使用numberOfRowsInSection方法的NSPredicate问题
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;
}
并在视图控制器UISearchBarDelegate,UITableViewDataSource,的UITableViewDelegate
在tableCells中的字符串与像1789年至1798年开始的日期。当我尝试搜索信息时,搜索方法仅适用于第一个数字....例如,我有一个信息以5开头的单元格。当我输入UISearchBar数字5时,该方法返回以1.当我键入两个数字时,方法返回“无结果”。问题在哪里,我哪里出错了?
你的“时期”是NSString的一个实例吗? – LordTwaroog 2012-01-04 19:57:28
@LordTwaroog是的。 – NCFUSN 2012-01-04 20:03:27
尝试调试,如果self.filteredItems包含您希望的元素。此外,我会将此代码从NumberOfRowsInSection:方法移出到更相关的位置。注意'filteredItems = [[NSMutableArray alloc] init]中可能存在的内存泄漏;'' - 您不会在此处释放任何可能的先前值。 – LordTwaroog 2012-01-04 20:30:30