需要一点帮助来理解 Apple 关于 Core Data 的文档
Posted
技术标签:
【中文标题】需要一点帮助来理解 Apple 关于 Core Data 的文档【英文标题】:Need a little help understanding Apple's documentation on Core Data 【发布时间】:2012-08-20 03:09:41 【问题描述】:我正在阅读 Apple 的“核心数据片段”文档 (https://developer.apple.com/library/mac/#documentation/DataManagement/Conceptual/CoreDataSnippets/Articles/stack.html#//apple_ref/doc/ uid/TP40008283-SW1),我在这部分有点困惑。
To create a new managed object context, you need a persistent store coordinator.
NSPersistentStoreCoordinator *psc = <#Get the coordinator#>;
NSManagedObjectContext *newContext = [[NSManagedObjectContext alloc] init];
[newContext setPersistentStoreCoordinator:psc];
If you already have a reference to an existing context, you can ask it for its persistent
store coordinator. This way you can be sure that the new context is using the same
coordinator as the existing one (assuming this is your intent):
NSManagedObjectContext *context = <#Get the context#>;
NSPersistentStoreCoordinator *psc = [context persistentStoreCoordinator];
NSManagedObjectContext *newContext = [[NSManagedObjectContext alloc] init];
[newContext setPersistentStoreCoordinator:psc];
特别是 和 部分。这到底是什么意思,在实际应用中应该去那里?
谢谢。
【问题讨论】:
【参考方案1】:据我了解,托管对象上下文几乎就像一个暂存器,您可以在其中进行更改,然后将该暂存器保存到存储中。几乎每次您想将托管对象放入存储中时,您都需要一个上下文,因此当您要这样做时,请务必创建一个。我对 PSC 不是很熟悉,但从外观上看,您只需要一个,并且可以在多个上下文中使用它。如果您希望在整个应用程序中使用相同的 PSC,那么我想您可以将它放在一个单例中或以某种方式传递它,这样您就不必每次都创建一个新的。
【讨论】:
是的,我想我才刚刚开始理解这一点,但我在本文档中特别想弄清楚的是 在这段代码中的含义-sn-p .显然,应该有一些东西去那里,也许是某种方法调用。我只是希望他们举一个实际的例子。 明白了。对于上下文,这就是你要做的: coreDataAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; NSManagedObjectContext *context = [appDelegate managedObjectContext];不确定PSC。 This 是我为了解 Core Data 的工作原理所做的。或许对你也有帮助。 和This应该解释PSC。 谢谢。我会好好读一读。我正在尝试制作的应用程序(仅供练习)是一个 Cocoa 应用程序,所以我不确定行为有多么不同。我试图在一个额外的窗口控制器中从 Appdelegate 获取 managedObjectContext,编译器一直抱怨选择器没有已知的类方法(即使它在 Appdelegate.m 文件中声明为 day)。我也在我的视图控制器中导入 AppDelegate.h。所以我相信视图控制器需要它自己的 ManagedObjectContext。这是我碰壁的地方。以上是关于需要一点帮助来理解 Apple 关于 Core Data 的文档的主要内容,如果未能解决你的问题,请参考以下文章