2014-01-30 36 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; 
相關問題