• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
NSFetchedResultController bug?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

NSFetchedResultController bug?


  • Subject: NSFetchedResultController bug?
  • From: Alex Reynolds <email@hidden>
  • Date: Tue, 13 Oct 2009 03:15:37 -0700

I am reworking Apple's CoreDataBooks sample iPhone application to add five relationship-less instances of an NSManagedObject class ("Book").

When I add these to a secondary managed object context (MOC) and then merge these changes with the primary MOC, the application crashes with the following error:

2009-10-13 02:59:12.787 MyApp[43049:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (7) beyond bounds (7)'

If I reopen the application, those five instances are in the data store and are displayed properly in the table view. As they are being added to the Core Data store, it looks like there is something wrong with the table view update process.

If I wipe the application and recompile, I get the same symptom.

If I first comment out the following line:

[_tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];

in the NSFetchedResultController delegate method:

	-controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:

then the application does not crash on the first insert. But it crashes on a subsequent insert attempts with the following error:

2009-10-13 03:10:19.072 MyApp[43129:207] *** Assertion failure in - [UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/ UIKit-984.38/UITableView.m:774
2009-10-13 03:10:19.073 MyApp[43129:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (2) must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted, 0 deleted).'


In this subsequent attempt, I am not adding any Book MOs to the secondary MOC, but the table view is still being refreshed. I suspect this is because -insertRowsAtIndexPaths:withRowAnimation: was commented out, but strangely the table view has the two rows in the first section.

Is there a bug with the -insertRowsAtIndexPaths:withRowAnimation: call on the first insert attempt? Is there a way to work around this?

Is there a relatively bug-free demonstration or explanation of how to use the NSFetchedResultController class to manage iPhone table view updates properly?

Thanks,
Alex
_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Prev by Date: Implementing Back and Forth Control.
  • Next by Date: Re: More Core Data Questions
  • Previous by thread: Re: Implementing Back and Forth Control.
  • Next by thread: Re: NSFetchedResultController bug?
  • Index(es):
    • Date
    • Thread