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/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to