2016-08-24 31 views
0

我试图从应用程序扩展访问Core Data。我已将该应用的Core Data商店重新分配到共享应用组目录。在应用程序中,NSManagedObjectModel和所有实体都是以编程方式创建的,因此没有.mom文件。在这种情况下,我如何获得NSManagedObjectContext?由于依赖性问题,共享代码以创建具有扩展名的模型和实体是非常困难的。iOS - 当NSManagedObjectModel以编程方式创建时来自扩展的核心数据

回答

0

就像你在应用程序中做的一样。创建一个新的上下文并设置NSPersistentStoreCoordinator属性。

RE:评论

嗯,是的,但你怎么弄的NSPersistentStoreCoordinator? 创建NSPersistentStoreCoordinator需要一个 NSManagedObjectModel,但NSManagedObjectModel是以编程方式在 应用程序中创建的。我可以像在应用程序中一样创建NSManagedObjectModel,方式与 相同吗?

您可能希望在自己的框架中构建核心数据堆栈的代码包含在应用程序和应用程序扩展中。这样,扩展和应用程序都可以构建堆栈并访问共享组中的持久性存储。

此外,该应用程序的NSManagedObjectModel包含几个实体,但在 扩展我只需要一个。 扩展中的NSManagedObjectModel是否只有这一个实体并且能够与数据库 进行通信?

我不会太担心它,将核心数据代码模块化成一个单独的框架/目标并从那里开始。

+0

嗯,是的,但你如何获得NSPersistentStoreCoordinator?创建NSPersistentStoreCoordinator需要NSManagedObjectModel,但NSManagedObjectModel是以编程方式在应用程序中创建的。我可以像在应用程序中一样创建NSManagedObjectModel吗? – hatooku

+0

此外,该应用程序的NSManagedObjectModel包含几个实体,但在扩展中我只需要一个。扩展中的NSManagedObjectModel是否只有一个实体并且能够与数据库通信? – hatooku

+0

更新了答案。 –

相关问题