> On 2015 Oct 18, at 05:05, Michael de Haan  <m...@comcast.net> wrote:
> 
> I am using a separate, second “standAlone" Window to display a 
> SplitViewController. Design is StoryBoard, for an OS X application.
> From appDelegate, I instantiate the SplitViewController in 
> “applicationDidFinishLaunching"
> 
> let storyBoard = NSStoryboard(name: "Main", bundle: nil)
> resultWindowController = 
> storyBoard.instantiateControllerWithIdentifier("ResultController") as! 
> NSWindowController
> resultWindowController.showWindow(self)

It looks to me like you are instantiating a window controller, not a split view 
controller.  But that’s a better idea anyhow.

> In this particular “testBed” configuration, I initialized a Core Data Stack 
> in AppDelegate. My goal is to initialize the splitViewItem’s context once 
> AppDelegate has setup the stack.

By “context”, do you mean managed object context?  The managed object context 
is part of the Core Data stack.

> In the end, I resorted to posting a notification in 
> “applicationDidFinishLaunching"
> 
> "NSNotificationCenter.defaultCenter().postNotificationName("SetUpComplete", 
> object: self.managedObjectContext)” 
> 
> for the interested parties, but this seems to duplicate a lot of code in each 
> of the children’s view controllers.
> 
> viz
> 
> NSNotificationCenter.defaultCenter().addObserverForName("SetUpComplete", 
> object: nil, queue: NSOperationQueue.mainQueue()) { (notification) -> Void in
>            self.managedObjectContext = notification.object as! 
> NSManagedObjectContext
>   }
> 
> where  “managedObjectContext” is simply a var in the Child View Controller

Alarm bells go off in my head whenever I see instance variables which are used 
only as a “shortcut” to objects which are owned by other objects.  I suppose it 
may not be too dangerous in the case of an app-wide managed object context 
which you are sure is going to live for the entire run of the app and never be 
replaced.  But it’s a very odd design, and getting it via a notification is 
even more odd.

> Is there a simpler way of doing this? Maybe initializing the actual 
> splitViewController and using this as a source of the context for it’s 
> children?

That would just move the oddity from one class to another.

I would remove that instance variable and notification.  Instead, get to that 
managed object context directly, by adding a method like this to any object 
that needs the app-wide managed object context (sorry, in Objective-C):

@property (readonly) NSManagedObjectContext managedObjectContext ;

- (NSManagedObjectContext*)managedObjectContext {
    return [(MyAppDelegate*)[NSApp delegate] managedObjectContext] ;
}

Now help me by showing what that would look like in Swift :)



_______________________________________________

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