2014-01-30 5 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; 
Смежные вопросы