2014-09-10 24 views
1

我正在使用Swift,Core Data和故事板创建一个新的Cocoa项目,并遇到了一个对我来说毫无意义的问题。经过一些相当广泛的狩猎活动,包括在这个网站上,我得出结论,我必须失去一些明显的东西,但不知道是什么。这是我迄今为止所做的:斯威夫特,故事板和核心数据......失踪的持久存储协调员?

1.使用Swift,Storyboard和Core Data创建一个新项目Cocoa Application。 2.在.xcdatamodeld中创建一个实体。我们称之为数据集。 3.创建NSSplitViewController的子类(用于我想在程序的其余部分执行的操作)。 4.将主窗口的窗口内容设置为myVC的实例。我检查了它,并加载并显示正常。 5.在viewController.swift,得到managedObjectContext像这样:

@IBOutlet var moc:NSManagedObjectContext! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do view setup here. 

    let appDelegate = NSApplication.sharedApplication().delegate as AppDelegate 

    moc = appDelegate.managedObjectContext 


    println("mainsplitviewcontroller moc:") 
    println(moc) 
    println("mainsplitviewcontroller psc:") 
    println(moc.persistentStoreCoordinator) 




    NSLog("Main split view loaded") 
} 

(是的,我对依赖注入,但我首先要解决这个问题)。

  1. 在IB中,将一个managedObjectContext对象放在View Controller实例中。

  2. 在IB中,将变量moc的myVC出口连接到managedObjectContext。

  3. 在IB中,创建一个数组控制器。将其设置为实体。实体名称是数据集。打开准备内容。

  4. 作为插座或绑定,将阵列控制器连接到MOC。使用插座,只需从托管对象上下文中右键单击弹出式窗口拖动到上面6中创建的MOC图标即可。对于绑定,使用老式的方法,进入绑定选项卡,并在参数下绑定到:(视图控制器),模型关键路径:moc。 (moc从5以上)

然后,我建立并运行。并且出现错误:“由于托管对象上下文没有持久性存储协调器,因此无法执行操作。”

这种情况发生在我试图做的9以上。

现在,事情是,从我的println语句,对象提到的这两个应用程序的委托和视图控制器是一样的,都为管理对象的上下文和持久性存储控制器,如下图所示:

的appdelegate商务部: 的appdelegate PSC: mainsplitviewcontroller商务部: mainsplitviewcontroller PSC:

我希望我能显示图像,但我是新来的,所以不能这样做。我在做什么明显错误?我认为我理解了这个过程:确保VC可以访问MOC,然后将MOC对象放入IB的VC窗口中,使其成为插座,并将其连接到阵列控制器。为什么视图控制器的swift文件似乎表明PSC与应用程序委托相同,但在IB中,阵列控制器认为MOC根本没有PSC?

感谢您的阅读!

+0

你的AppDelegate类中有哪些代码用于创建PersistentStoreCoordinator? – Moth 2014-09-10 21:27:03

+0

嗨蛾,只是最新的Xcode测试版的模板代码,现在增加了一些println来识别MOC和PSC。 – redeyes 2014-09-10 22:03:06

+0

您的NSManagedObject(DataSet)是否标记为Objective-C类? – Moth 2014-09-10 22:11:20

回答

2

我不知道这是否会有所帮助,但我不惊讶您的项目显示错误。您有两个托管对象上下文 - 一个由应用程序委托创建,另一个由情节提要创建。您的界面代码连接到未连接到持久性存储的第二个MOC。

+0

@Jenny嗨,这确实有帮助!我认为通过将IB托管对象上下文放置在窗口控制器中,然后将其链接到窗口控制器的moc的IBOutlet,我将妈妈的参考传递给了我。我现在看到,我只是在IB中创建了一个新的moc。我认为,那么IB中的数组控制器需要连接到Bindings选项卡中的moc?这就是我以前用.xib做的。 – redeyes 2014-10-05 19:09:59