2016-08-24 30 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

更新了答案。 –

相關問題