Managed object context in most cases created in application delegate. What are the ways of passing it along to view/controller hierarchy, so every navigation/tab controller in the tree can have access to it. Passing it every time from parent to child may not be the best since I have to carry this information every time and sometimes not all of the controllers to the way of particular child may need it.
A:
You can also create a main context object in your main Nib. And link the controllers with this object. Or create a singleton if you only use one MOC.
Diederik Hoogenboom
2010-07-04 12:28:52
if controllers are in different nib rather than main then it will not work. Singleton is fair option.
Michael
2010-07-04 12:40:24
A singleton is a broken design and should be avoided at all costs.
Marcus S. Zarra
2010-07-04 19:02:17
+3
A:
The recommended design is to do a dependency injection. This means that when you create a UIViewController
you pass in the NSManagedObjectContext
via a property. If the UIViewController
only needs a single or set of NSManagedObject
instances then you would just hand those in via properties.
This design is more flexible and allows for greater reuse of your code. Linking everything to a single "hard-coded" NSManagedObjectContext
in the AppDelegate is fragile and reduces the flexibility of your code.
I discuss this in depth on The Mac Developer Network.
Marcus S. Zarra
2010-07-04 19:01:40