Core Data和NSArrayController之间的绑定问题

时间:2012-06-12 19:53:42

标签: cocoa core-data tableview cocoa-bindings nsarraycontroller

我正在尝试设置Core Data,NSArraycountroller和NSTableView之间的绑定。获取NSArrayController的NSManagedObjectContext。我在IB中拖了一个NSObject,并在appDelegate之后命名它,然后在appDelegate和arrayController之间设置objectContext的绑定。

然而,每当我试图运行该应用程序时。我收到此错误消息:

错误消息:

The managed object model version used to open the persistent store is incompatible with
the one that was used to create the persistent store

然后是另一条错误消息:

Failed to initialize store.

我google了,大多数人可以通过清理他们的项目或删除〜/ Library / Application Support / AppName / 下的文件来解决这个问题。但我没有那些运气。

另一件事是,我非常想要一些关于这个主题的好教程(CoreData + ArrayController + TableView)。有人可以对此有所了解吗?我仔细阅读了“Mac OSX第4版可可编程”一书的第11章,但没有发现它真的有用。

感谢。

2 个答案:

答案 0 :(得分:1)

终于解决了这个问题。我认为这与Reskit有关。当与CoreData捆绑时,Reskit有自己的managedObjectContext。这就是为什么它一直告诉我两个对象模型是不兼容的。 NSArrayController应绑定到RKManager中的managedObjectContext而不是appDelegate中的managedObjectContext。

所以我把它放在视图控制器的init方法中:

RKObjectManager *objectManager = [RKObjectManager sharedManager];
currentObjectContext = objectManager.objectStore.managedObjectContextForCurrentThread;

将NSArrayController对象中的managedObjectContext指向currentObjectContext。

答案 1 :(得分:0)

错误与您的托管对象模型有关;它与您的绑定或表视图无关。如果它在您运行应用程序时发生(与您尝试打开文档时相比),则可能是在恢复自动保存文档期间。

尝试删除与〜/ Library / Autosave Information 相关的任何内容,并查看是否可以解决初始问题。