1

我在 SWIFT 的 Xcode (8.3.2) 中开发了一个 macOS 应用程序。

我有一个包含多个实体和一个标识符(myidentifier)的 CoreData 模型。

我希望能够在运行时以编程方式识别模型的实体,以便我可以遍历实体并根据 JSON 文件中的数据存储来自一系列 JSON 文件的数据。

迄今为止,我一直在创建实体,然后为每个实体编写一个类来保存和获取数据。它工作正常且符合预期。但是,如果我继续这样下去,我最终会得到大约 50 个不同的实体及其关联的类文件(请注意,有些实体使用一对多关系,但大多数不使用)。

我想创建一个单独的类,它将枚举模型的众多实体并存储相关数据(以及相关的获取例程)。

我还应该注意,我为每个实体使用 NSManagedObject 子类。

如何获取对我用于应用程序的模型的 NSManagedObjectModel 引用?我似乎找不到合适的机制来允许我这样做。我可以使用模型标识符来执行此操作吗?

我的想法是,如果我可以使用 entityByName,我可以使用生成的 [String: NSEntityDescription] 来访问我的实体并根据需要进行枚举。

4

1 回答 1

2

您可以使用mergedModel(from bundles: [Bundle]?)(请参阅此处的文档,指定Bundle.main获取主包。或者,您的 NSManagedObjectContext 将具有对 的引用,persistentStoreCoordinator其本身将具有对managedObjectModel.

请注意, NSManagedObjectModel 有一个entities属性,因此您可以使用:

for myEntity in myModel.entities { ... }

而不是使用entitiesByName.

于 2017-06-11T13:35:28.927 回答