在两个部分中搜索时崩溃

时间:2013-01-15 10:55:21

标签: ios uitableview cocoa-touch nsfetchedresultscontroller uisearchdisplaycontroller

我有NSFetchedResultController个不同的部分。 当我尝试使用UISearchDisplayController进行搜索时发生崩溃:

*** Assertion failure in -[UITableViewRowData rectForRow:inSection:], /SourceCache/UIKit/UIKit-2372/UITableViewRowData.m:1630

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for rect at invalid index path (<NSIndexPath 0x1d2c4120> 2 indexes [0, 1])'

我检查过,我的搜索数组确实有两个条目(预期结果):

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

返回1

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

返回2

有趣的是,如果我只有一个部分,那就完美了。

请帮忙! :)

1 个答案:

答案 0 :(得分:38)

不确定你是否弄明白,我认为你做了但假设你正在使用

[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
在你的cellForRowAtIndexPath

 if (tableView == self.searchDisplayController.searchResultsTableView) {
    cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 } else {
    cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
 }

还要确保使用self.tableView