- (void)searchTableList {
NSString *searchString = searchBar.text;
NSString *str=[[stories valueForKeyPath:@"name"] componentsJoinedByString:@"@"];
NSLog(@"desired string:%@",str);
NSMutableArray *array = [[NSMutableArray alloc]init];
array = [str componentsSeparatedByString:@"@"];
//永远不要尝试使用比较词典数组首先提取字符串
for (NSString *tempStr in stories) {
NSComparisonResult result = [tempStr compare:searchString options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchString length])];
if (result == NSOrderedSame) {
[filteredContentList addObject:tempStr];
}
}
}
答案 0 :(得分:1)
首先,filteredContentList
永远不会在上面的代码中分配,所以它总是指向nil。在filteredContentList = [NSMutableArray array]
中添加viewDidLoad
之类的smth。
其次,您依靠isSearching
boolean
标志来检测您正在处理搜索结果表视图或您控制器的常规table view
。这是,恕我直言,不好的做法。
您应该依赖tableView参数,该参数将传递给表视图委托的每个方法(在您的情况下 - 您的UITableViewController
)。设置标记或将tableView参数与self.tableView
进行比较。
最后一件事 - 您无需在reloadData
致电viewDidLoad
。