Question: At the moment I am passing my `NSManagedObjects` via `Segues` to child views.

I am yet to make a change to any of these `NSManagedObjects` but it occurred to me that I may be going about it in the wrong way.

When I make a change to an `NSManagedObject` in this way and save it back to the `MOC` and then I return to a parent view - will that parent views' `NSManagedObject` have those changes or do I need to make a new `fetchRequest` to the `MOC` with every view load?

Answer: 
You can pass the object if you like, because you can just ask it for its MOC if you need it.

Or, you can pass the MOC itself.

If the views share the same MOC, then yes, they will see the same data.

Or, you can create an independent MOC, which will keep any changes isolated to that MOC until it is saved. Then, if you choose to save to "detail MOC", those changes can be merged in the typical Core Data way, or if your new MOC is a child context, the changes will automatically be saved into the parent MOC.

As I said in my comment to the earlier post. Please do not stuff a managedObjectContext into the App Delegate. Yes, that's how Apple's template works. It's completely wrong. The only benefit is that it's simple.

It's still wrong though.

What you said you were doing is the correct approach.
**UPDATED ANSWER:**
In response to the comments on other answers and below, I did some more research about this topic. I am really confused that the apple docs lead me to believe this was correct. I am unsure of why it is not really correct, but it appears that many people view it as not the right way to do it. As such, I am leaving this answer posted for people to refer to. This is a functioning way of doing this, but it is not preferred by people who know more about the topic than I.

It is confusing to find many references to accomplishing this the way I have described on SO... it lead me further to believe this was the way to do it. Maybe someone can post useful links as to details of the preferred method?

**ORIGINAL ANSWER:**

I have found it is much easier to have the view controllers reference the appDelegate to get the NSManagedObject and the NSManagedObjectContext. This prevents you from passing that info over and over again, and ensures that you are always referring to the same MOC.

To do this, you would have this listed on each view controller that needs the MOC: 

You can do it like this:

```
let appDel : AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

var moc = appDel.managedObjectContext!    

```

or you could say:

```
var moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!

```