0

以下两种方法在结果方面有什么区别:

+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;

+ (NSEntityDescription *)entityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;

我应该什么时候使用它们中的每一个?

4

3 回答 3

4

insertNewObjectForEntityForName创建实体的实例并将其添加到上下文中。上下文现在很脏,需要保存。返回的实例是 的子类NSManagedObject

entityForName返回NSEntityDescription描述实体的实例,它具有哪些属性和关系,它们是如何构造的。上下文不会以任何方式修改。

于 2014-01-30T12:20:08.820 回答
1

insertNewObjectForEntityForName:...返回NSManangedObject与以下代码相同的对象。

NSManagedObjectModel *managedObjectModel =
        [[context persistentStoreCoordinator] managedObjectModel];
NSEntityDescription *entity =
        [[managedObjectModel entitiesByName] objectForKey:entityName];
NSManagedObject *newObject = [[NSManagedObject alloc]
            initWithEntity:entity insertIntoManagedObjectContext:context];
return newObject;

entityForName:..返回NSEntityDescription与以下代码相同的对象。

NSManagedObjectModel *managedObjectModel = [[context persistentStoreCoordinator] managedObjectModel]; 
NSEntityDescription *entity = [[managedObjectModel entitiesByName] objectForKey:entityName]; 
return entity;
于 2014-01-30T12:21:03.890 回答
0

id 变量是表示对象地址的数据类型。因为它只是一个地址,id可以是任何对象,因为它的类型是指针,所以不需要包含*符号

+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;

因为 * 符号表示指向特定类型的指针。

+ (NSEntityDescription *)entityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;
于 2014-01-30T12:27:25.447 回答