CoreData: error: Serious application error. An exception was caught from the delegate of
NSFetchedResultsController during a call to -controllerDidChangeContent:. Invalid update: invalid number of sections.
The number of sections contained in the table view after the update (1) must be equal to the number of sections contained in the table view before the update (0), plus or minus the number of sections inserted or deleted (0 inserted, 0 deleted). with userInfo (null)
ошибка такая?как я могу знать?что не так с моим кодом ... я не понимаю с этой ошибкой .. кто-нибудь может сказать мне, что это?и как я могу исправить этот ад?
номер раздела всегда 1 .. Почему это начало 0 перед обновлением?Как сделать так, чтобы в таблице было 1 и только 1 раздел перед любым обновлением?
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [[self.FetchController sections] count];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.FetchController sections] objectAtIndex:section];
/*int numberOfRow=[sectionInfo numberOfObjects]-(self.numberOf20SkipFromtheBeginning*20);
numberOfRow = MIN(20,numberOfRow);*/
//int numberOfRow=MIN(100,[sectionInfo numberOfObjects]);
CalledRowCountingNotYetCallRowForSection=true;
[self.tableViewA setBounces:YES];
if([sectionInfo numberOfObjects]>100){
//[Timer searchCriteriaChanged];
CLog(@"Something Wrong This NumberOfRow: %d", [sectionInfo numberOfObjects]);
}
return [sectionInfo numberOfObjects];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
DLog(@"Function TableView AT listnewController");
CalledRowCountingNotYetCallRowForSection =false;
if ([self tableView:tableView numberOfRowsInSection:indexPath.section]==0)
{
DLog(@"Something is VERY WRONG. Number of Section: %d" ,indexPath.section);
}
DLog(@"Indexpath at cellForRowAtIndexPath : %d", indexPath);
Business * theBiz=[self.FetchController objectAtIndexPath:indexPath];
return theBiz.CustomCell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DLog(@"Function didselectrowatindexpath listnewcontroller");
//[BNUtilitiesQuick UtilitiesQuick].currentBusiness=[[self.FetchController fetchedObjects] objectAtIndex:[indexPath row]+self.numberOf20SkipFromtheBeginning*20];
[BNUtilitiesQuick UtilitiesQuick].currentBusiness=[[self.FetchController fetchedObjects] objectAtIndex:[indexPath row]];
[BNUtilitiesQuick SafelyPushControllerAtNavigationController:[BNUtilitiesQuick NearbyIsiKota].mDetailBusiness atNavigationController:[BNUtilitiesQuick NearbyIsiKota].navigationController];
}
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller {
DLog(@"controllerWillChangeContent: %@", controller);
[self.tableViewA beginUpdates];
}
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo
atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type {
DLog(@"didChangeSection: %@", controller);
switch(type) {
case NSFetchedResultsChangeInsert:
[self.tableViewA insertSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[self.tableViewA deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath {
DLog(@"controller:%@\ndidChangeObject:%@\natIndexPath:%@\nforChangeType:%d\nnewIndexPath:%@\n",controller, anObject, indexPath, type, newIndexPath);
UITableView *tableView = self.tableViewA;
DLog(@"%@", self.tableViewA);
switch(type) {
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationRight];
break;
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
break;
case NSFetchedResultsChangeUpdate:
//[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
//[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]withRowAnimation:UITableViewRowAnimationRight];
//[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
break;
case NSFetchedResultsChangeMove:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]withRowAnimation:UITableViewRowAnimationRight];
break;
}
}
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
[self.tableViewA endUpdates];
}