2014-01-30 35 views
0

有什么区别,在结局方面,2种以下方法之间:的iOS >>核心数据>> NSEntityDescription >>创建方法

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

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

什么时候应该使用他们每人一个?

回答

3

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

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

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; 
0

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

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

由于*符号表示一个指向一个特定的类型。

+ (NSEntityDescription *)entityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context; 
相关问题