UISearchDisplayController和CoreData'在索引0处的索引2处没有对象'

时间:2013-11-23 23:39:45

标签: objective-c core-data ios7 uisearchdisplaycontroller

我正在使用CoreData来存储一些数据(不是很大的数量)。我决定添加到我的TVC(显示数据的位置)UISearchDisplayController,以便用户可以通过文本进行搜索。要在CD中搜索,我正在使用第二个NSFetchedResultsController。问题是我收到以下错误:'no object at index 2 in section at index 0'

我已经检查了几件事来解决问题:

  • 从db获取了多少个对象,
  • numberOfSectionsInTableView:tableView:numberOfRowsInSection:
  • 给出的值是多少?
  • 我还检查过传递给两个方法的tableView是否指向self.searchDisplayController.searchResultsTableView我认为是正确的
  • fetchedObjects中的对象数与tableView:numberOfRowsInSection:
  • 返回的值相同
  • 我只有一个部分(获取请求中为sectionNameKeyPath = nil

我发现了几个类似的问题,但没有任何帮助。我的实施基于this code

我做错了什么?哪里可能是个错误?如果您需要更多信息,请与我们联系。提前谢谢。

修改

我最近一直在努力工作。早上回到代码时,我已经意识到了几件事。

我一直在使用这样的代码:

- (void)controller:(NSFetchedResultsController *)controller
   didChangeObject:(id)anObject
       atIndexPath:(NSIndexPath *)indexPath
     forChangeType:(NSFetchedResultsChangeType)type
      newIndexPath:(NSIndexPath *)newIndexPath {
    .
    .
    .
    UITableView *tableView = controller == self.fetchedResultsController ? self.tableView : self.searchDisplayController.searchResultsTableView;
    .
    .
    .
}

当我在搜索开始时self.fetchedResultsController = nil时,会导致错误。

此外,我一直使用相同的fetchedResultsController。 [self fetchedResultsControllerForTableView:tableView](我上面链接的代码中的方法)解决了这个问题。确保使用适当的fetchedResultsController!即使你是,再次检查。

在此之后,我应该得到我的搜索结果...但我没有。

其他事情是使用[tableView dequeueReusableCellWithIdentifier:CellIdentifier];。看起来还不错,但是在searchDisplayController的tableView中,我没有给定标识符的单元格,所以我需要将它们从self.tableView出列。

现在我有了搜索结果。

如果您没有自己的,这也可以提供帮助:

- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView
{
    [tableView registerClass:[NewsCell class] forCellReuseIdentifier:identifier];
}

感谢所有阅读我的问题并花了一分钟思考解决方案的人。

0 个答案:

没有答案