我一直在查看有关Core Data的文档,并试图找出如何安排Core Data Stack,以便所有UITableViewControllers都可以访问它。 Apple提供的所有示例都表明这是在AppDelegate上实现的,但是文档并没有推荐这种方法,因为它太过曲折了!请参阅link。
(为什么在iPhone SDK文档中没有提到这是另一个谜)
我的问题是我按照TopSongs中显示的Core Data示例重复设计模式,以检索子视图的ManagedObjectContext实体,并生成以下错误...无法找到实体名称的歌曲NSManagedObjectModel ”。奇怪的是,这可以在父表视图中找到它,所以我认为这是因为AppDelegate上的核心数据堆栈已被处理。
有没有人知道一个很好的例子,它遵循与Recipies,CoreData Books和Locations上创建的设计模式不同的设计模式?所有这些都遵循相同的模式。
我想要做的就是检索原始数据,并在chid tableview中使用不同的标准进行排序。
答案 0 :(得分:4)
关于人们喜欢在this question中放置核心数据堆栈的问题,有很多讨论。我倾向于将堆栈放在一个单例中(正如我在那里指出的那样)。这使您可以在应用程序中的任何位置方便地访问堆栈。
就您的问题而言,我发现核心数据堆栈的元素已被解除分配的可能性极小。首先,你会在向你的上下文或模型发送消息时崩溃,而不是回到你现在的报告。如果您可以从应用程序中的其他位置访问“Song”实体,我的赌注是您没有将模型或上下文正确地传递给需要它的实例。
答案 1 :(得分:1)
IIRC Apple示例初始化App Delegate中的Core Data堆栈,但它们实际上在视图控制器上设置属性以引用ManagedObjectContext并在应用程序加载时设置它们 - Apple的文档所指的是我读到的是你应该做类似的事情,而不是直接从App Delegate加载ManagedObjectContext。
如果你发布一些代码,那么帮助你弄清楚你的错误是什么会更容易。我要检查的第一件事是控制器中对ManagedObjectContext的引用不是nil。
答案 2 :(得分:0)
你在这里遇到的问题是因为你没有在对象模型中声明一个名为songs的实体......你所遵循的模式与它无关...我建议你阅读核心数据和对象模型here。希望能帮到你