Aaron Tuller had the answer to the question. I needed to make sure the property is dynamic so that KVO picks up the change. I have made the commit and it works for anyone who is interested.
https://github.com/ericgorr/sb_ac_doc/commit/a2ca8957f1216cf656c3cc0d9246f84d1dcb0e67 > On Mar 14, 2016, at 8:40 PM, Eric Gorr <mail...@ericgorr.net> wrote: > > I have a core data, document based, storyboard OS X application. > > There is a test project here: > > https://github.com/ericgorr/sb_ac_doc > > which is just the default project Xcode creates with a few modifications. > > I have a single view controller and the view contains a table view which will > eventually display the data in the Core Data document. I will also using an > array controller to manage the rows for the table view. > > The three scenes are: > > - Application Scene > - Window Controller Scene > - Main View Controller Scene > > The *Main View Controller Scene* contains the *TestItem Array Controller*. > > The *TestItem View Controller* contains the code: > > class ViewController: NSViewController > { > var context: NSManagedObjectContext? > > // > // ... > // > } > > The *TestItem Array Controller* contains the Parameters Binding: > > Managed Object Context > Bind to: Main View Controller > Model Key Path: context > > In Document.swift: > > override func makeWindowControllers() > { > let moc = self.managedObjectContext! > > // Returns the Storyboard that contains your Document window. > let storyboard = NSStoryboard(name: "Main", bundle: nil) > let windowController = > storyboard.instantiateControllerWithIdentifier( "Document Window Controller" > ) as! NSWindowController > let contentController = windowController.contentViewController as! > ViewController > > NSLog( "%@", self.managedObjectContext! ) > > contentController.context = self.managedObjectContext! > > NSLog( "%@", contentController.context! ) > > self.addWindowController( windowController ) > } > > This is my attempt to pass the MOC to the view controller before the array > controller attempts to access it. > > The NSLog's both print out valid values. > > However, I am getting the following crash: > > 2016-03-13 20:13:02.667 sb_ac_doc[73021:16415257] Cannot perform operation > without a managed object context > 2016-03-13 20:13:02.669 sb_ac_doc[73021:16415257] ( > 0 CoreFoundation 0x00007fff956f9ae2 > __exceptionPreprocess + 178 > 1 libobjc.A.dylib 0x00007fff9a09073c > objc_exception_throw + 48 > 2 CoreFoundation 0x00007fff956f998d > +[NSException raise:format:] + 205 > 3 AppKit 0x00007fff8c8224e7 > -[_NSManagedProxy _managedObjectContext] + 66 > 4 AppKit 0x00007fff8c822507 > -[_NSManagedProxy _persistentStoreCoordinator] + 22 > 5 AppKit 0x00007fff8c82257a > -[_NSManagedProxy _entity] + 46 > 6 AppKit 0x00007fff8c822802 > -[_NSManagedProxy fetchRequestWithSortDescriptors:limit:] + 89 > 7 AppKit 0x00007fff8c821fec > -[NSObjectController(NSManagedController) > _executeFetch:didCommitSuccessfully:actionSender:] + 75 > 8 AppKit 0x00007fff8c5c18c2 > -[NSController _controllerEditor:didCommit:contextInfo:] + 185 > 9 CoreFoundation 0x00007fff955c417c > __invoking___ + 140 > 10 CoreFoundation 0x00007fff955c3fce > -[NSInvocation invoke] + 286 > 11 CoreFoundation 0x00007fff95663be6 > -[NSInvocation invokeWithTarget:] + 54 > 12 Foundation 0x00007fff87cce345 > __NSFireDelayedPerform + 377 > 13 CoreFoundation 0x00007fff9563fbc4 > __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20 > 14 CoreFoundation 0x00007fff9563f853 > __CFRunLoopDoTimer + 1075 > 15 CoreFoundation 0x00007fff956bde6a > __CFRunLoopDoTimers + 298 > 16 CoreFoundation 0x00007fff955facd1 > __CFRunLoopRun + 1841 > 17 CoreFoundation 0x00007fff955fa338 > CFRunLoopRunSpecific + 296 > 18 HIToolbox 0x00007fff8add1935 > RunCurrentEventLoopInMode + 235 > 19 HIToolbox 0x00007fff8add1677 > ReceiveNextEventCommon + 184 > 20 HIToolbox 0x00007fff8add15af > _BlockUntilNextEventMatchingListInModeWithFilter + 71 > 21 AppKit 0x00007fff8c25e0ee > _DPSNextEvent + 1067 > 22 AppKit 0x00007fff8c62a943 > -[NSApplication _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 454 > 23 AppKit 0x00007fff8c253fc8 > -[NSApplication run] + 682 > 24 AppKit 0x00007fff8c1d6520 > NSApplicationMain + 1176 > 25 sb_ac_doc 0x0000000100002427 main + 87 > 26 libdyld.dylib 0x00007fff987455ad start + 1 > ) > > What is the correct pattern I should use so the array controller can access > the MOC of the document? > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > 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: > https://lists.apple.com/mailman/options/cocoa-dev/mailist%40ericgorr.net > > This email sent to mail...@ericgorr.net _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com