How do I display core data on second view controller?
Posted
by
jon
on Stack Overflow
See other posts from Stack Overflow
or by jon
Published on 2010-10-05T04:22:49Z
Indexed on
2010/12/23
23:54 UTC
Read the original article
Hit count: 160
I am working on my first core data iPhone application. I am using a navigation controller, and the root view controller displays 4 rows. Clicking the first row takes me to a second table view controller. However, when I click the back button, repeat the row tap, click the back button again, and tap the row a third time, I get an error. I have been researching this for a week with no success.
I can reproduce the error easily:
- Create a new Navigation-based Application, use Core Data for storage, call it MyTest which creates MyTestAppDelegate and RootViewController.
- Add new UIViewController subclass, with UITableViewController and xib, call it ListViewController.
- Copy code from RootViewController.h and .m to ListViewController.h and .m., changing the file names appropriately. To simplify the code, I removed the trailing “_” from all variables.
- In RootViewController, I added #import ListViewController.h, set up an array to display 4 rows and navigate to ListViewController when clicking the first row.
In ListViewController.m, I added #import MyTestAppDelegate.h” and the following code:
- (void)viewDidLoad {
[super viewDidLoad];
if (managedObjectContext == nil) {
managedObjectContext = [(MyTestAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
..
}
The sequence that causes the error is tap row, return, tap row, return, tap row -> error. managedObjectContext is synthesized for the third time. I appreciate your patience and your help, as this makes no sense to me.
ADDENDUM: I may have a partial solution. http://www.iphonedevsdk.com/forum/iphone-sdk-development/41688-accessing-app-delegates-managed-object-context.html
If I do not release the managedObjectContext in the .m file, the error goes away. Is that ok or will that cause me issues?
- (void)dealloc {
[fetchedResultsController release];
// [managedObjectContext release];
[super dealloc];
}
ADDENDUM 2: See solution below. Sorry for the formatting issues - this was my first post.
© Stack Overflow or respective owner