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

Reply via email to