NSManagedObject 实体 class 方法
NSManagedObject entity class method
我最近意识到 NSManagedObject subclasses 继承了一个 class 方法 entity
可以用来为 class 获取一个 NSEntityDescription
。但是,我习惯于在创建 NSEntityDescription
时必须指定上下文,就像 entityForName:inManagedObjectContext:
一样。可以使用更简单的 entity
方法吗?它将与什么上下文关联?
Apple 记录了此方法not really。
NSEntityDescription
不是托管对象上下文的一部分——它是托管对象 model.
的一部分
当您加载数据模型时,它包含的所有实体描述都会被加载。 class 方法 +entity
有效,因为实体描述是与模型对象一起创建的。如果您尝试在 加载模型之前 调用此方法,它会 returns nil
在 Objective-C 中。 (在 Swift 中,出于某种原因,它 returns 是一个非可选值,所以它不是 nil,但是如果你使用它,你的应用程序会崩溃。不要问我为什么会这样。)
如您所述,您也可以使用 +entityForName:inManagedObjectContext:
。但是请查看该方法的文档:
Returns the entity with the specified name from the managed object model associated with the specified managed object context’s persistent store coordinator.
因此,即使该方法采用托管对象上下文参数,它仍在使用托管对象模型。它使用上下文来查找模型。您获得的对象与上下文无关,它与底层数据模型相关联。
这两种方法同样安全。使用您的代码中最有效的那个。
我最近意识到 NSManagedObject subclasses 继承了一个 class 方法 entity
可以用来为 class 获取一个 NSEntityDescription
。但是,我习惯于在创建 NSEntityDescription
时必须指定上下文,就像 entityForName:inManagedObjectContext:
一样。可以使用更简单的 entity
方法吗?它将与什么上下文关联?
Apple 记录了此方法not really。
NSEntityDescription
不是托管对象上下文的一部分——它是托管对象 model.
当您加载数据模型时,它包含的所有实体描述都会被加载。 class 方法 +entity
有效,因为实体描述是与模型对象一起创建的。如果您尝试在 加载模型之前 调用此方法,它会 returns nil
在 Objective-C 中。 (在 Swift 中,出于某种原因,它 returns 是一个非可选值,所以它不是 nil,但是如果你使用它,你的应用程序会崩溃。不要问我为什么会这样。)
如您所述,您也可以使用 +entityForName:inManagedObjectContext:
。但是请查看该方法的文档:
Returns the entity with the specified name from the managed object model associated with the specified managed object context’s persistent store coordinator.
因此,即使该方法采用托管对象上下文参数,它仍在使用托管对象模型。它使用上下文来查找模型。您获得的对象与上下文无关,它与底层数据模型相关联。
这两种方法同样安全。使用您的代码中最有效的那个。