Core data NSManagedObjectModel和my.xcdatamodel文件之间的连接?

Core data NSManagedObjectModel和my.xcdatamodel文件之间的连接?,core-data,Core Data,归档很容易,现在CoreData的概念让我感到困惑 声明的NSManagedObjectModel和我的实际xcdatamodel文件之间有什么联系 我声明了NSManagedObjectModel、NSManagedObjectContext,并相应地声明了NSPersistentStoreCoordinator,并连接了这三者。在此过程中,我没有发现任何线索表明声明的NSManagedObjectModel属性与我的xcdatamodel文件有关 只有在启动NSFetchRequest时,我

归档很容易,现在CoreData的概念让我感到困惑

声明的NSManagedObjectModel和我的实际xcdatamodel文件之间有什么联系

我声明了NSManagedObjectModel、NSManagedObjectContext,并相应地声明了NSPersistentStoreCoordinator,并连接了这三者。在此过程中,我没有发现任何线索表明声明的NSManagedObjectModel属性与我的xcdatamodel文件有关

只有在启动NSFetchRequest时,我才告诉它目标实体的名称,这就是我的NSManagedObjectContext


那就行了?我不必告诉任何人我的xcdatamodel文件的名称,只需告诉目标实体的名称即可?NSFetchRequest是否必须在我的所有xcdatamodel文件中搜索特定实体?如果我在两个不同的xcdatamodel中有两个同名的实体,该怎么办?

当您构建应用程序时,
.xcdatamodel
文件被编译以生成一个
.mom
文件,该文件被合并到应用程序包中。前缀保持不变,因此“myApplication.xcdatamodel”被编译为“myApplication.mom”


如果您在捆绑包中获取此文件的URL(例如使用
NSBundle
URLForResource:withExtension
方法),您可以使用
initWithContentsOfURL
初始化
NSManagedObjectModel
实例。或者,这可以解释明显没有任何连接的原因,可以使用
mergedModelFromBundles
类方法创建
NSManagedObjectModel
实例,该方法使用给定捆绑包中的所有模型(
.mom
文件)。

当您构建应用程序时,编译
.xcdatamodel
文件以生成一个
.mom
文件,该文件被合并到应用程序包中。前缀保持不变,因此“myApplication.xcdatamodel”被编译为“myApplication.mom”


如果您在捆绑包中获取此文件的URL(例如使用
NSBundle
URLForResource:withExtension
方法),您可以使用
initWithContentsOfURL
初始化
NSManagedObjectModel
实例。或者,这可以解释明显没有任何连接的原因,可以使用使用使用所有模型(
.mom
文件)的
mergedModelFromBundles
类方法创建
NSManagedObjectModel
实例在给定的捆绑包中。

NSManagedObjectModel是表示您在数据模型中创建的实体的对象(
.xcdatamodeld
)。数据模型编辑器有点像源代码编辑器,而
NSManagedObjectModel
则是表示已编译模型的东西


NSManagedObjectModel
包含对模型中所有实体的引用,这些实体表示为
NSEntityDescription
的实例。模型对象的用途是

  • 以便核心数据能够理解持久存储文件。该模型告诉核心数据需要哪些实体
  • 因此,核心数据操作(如fetch请求)可以配置为正确访问持久存储文件——例如,仅使用实际存在的实体
  • 这样就可以创建
    NSManagedObject
    的实例来反映数据模型中的实体

  • NSManagedObjectModel
    是表示您在数据模型中创建的实体的对象(
    .xcdatamodeld
    )。数据模型编辑器有点像源代码编辑器,而
    NSManagedObjectModel
    则是表示已编译模型的东西


    NSManagedObjectModel
    包含对模型中所有实体的引用,这些实体表示为
    NSEntityDescription
    的实例。模型对象的用途是

  • 以便核心数据能够理解持久存储文件。该模型告诉核心数据需要哪些实体
  • 因此,核心数据操作(如fetch请求)可以配置为正确访问持久存储文件——例如,仅使用实际存在的实体
  • 这样就可以创建
    NSManagedObject
    的实例来反映数据模型中的实体

  • 请阅读文档。核心数据非常复杂,不是一天就能学会的。如果你想避免以后的头痛,请阅读文档。相信我,这对你会有好处的。没有什么是神奇的,尽管有时候它看起来是如此。显示您使用的代码。请阅读文档。核心数据非常复杂,不是一天就能学会的。如果你想避免以后的头痛,请阅读文档。相信我,这对你会有好处的。没有什么是神奇的,尽管有时候它看起来是如此。显示您使用的代码。谢谢。这完美地回答了我的问题:)谢谢。这完美地回答了我的问题:)