首页 文章

在运行时查找CoreData模型的实体

提问于
浏览
0

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

我有一个CoreData模型,包含许多实体和一个标识符(myidentifier) .

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

到目前为止,我一直在创建实体,然后为每个实体编写一个类来保存和获取数据 . 它正如预期的那样完美地工作 . 但是,如果我继续这样做,我将最终得到大约50个不同的实体及其相关的类文件(请注意,有些实体使用一对多关系,大多数不使用) .

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

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

如何获取我正在为应用程序使用的模型的NSManagedObjectModel引用?我似乎无法找到允许我这样做的正确机制 . 我可以使用模型标识符吗?

我的想法是,如果我可以使用entitiesByName,我可以使用结果[String:NSEntityDescription]然后访问我的实体并根据需要枚举 .

1 回答

  • 1

    你可以使用 mergedModel(from bundles: [Bundle]?) (参见documentation here,指定 Bundle.main 来获取主包 . 或者,你的NSManagedObjectContext将引用 persistentStoreCoordinator ,它本身会引用 managedObjectModel .

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

    for myEntity in myModel.entities { ... }
    

    而不是使用 entitiesByName .

相关问题