在我的应用程序中,我有UITableView&用户请求后,可以从远程更新表数据。我使用Core Data& NSFetchedResultsController并在发生更改时调用-controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
:
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
{
switch(type)
{
case NSFetchedResultsChangeInsert:
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]
withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
break;
case NSFetchedResultsChangeMove:
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]
withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
一切正常,除了一件事。有时,重新加载第一行后,它显示没有边框(边框突然消失)。什么可能是错的?
P.S。:为了更新数据,我在后台创建了新的NSManagedObjectContext
并管理NSManagedObjectContextDidSaveNotification
。当收到通知时,会在主线程上执行mergeChangesFromContextDidSaveNotification
- 因此也会从主线程进行更新。
答案 0 :(得分:0)
这似乎不是核心数据的问题。
尝试拨打
[cell.backgroundView setNeedsDisplay];
以更新单元格。如果它不起作用,请尝试在setNeedsDisplay
上调用tableView
。
答案 1 :(得分:0)
很可能你遇到了问题:
tableView:cellForRowAtIndexPath:
...您为索引零提供了错误类型或大小的单元格。