2014-01-30 4 views
0

2 개 다음 방법과 결과의 측면에서 차이, 무엇인가 그아이폰 OS >> 코어 데이터 >> 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는 모든 객체가 될 수 있고, 그것의 타입은 포인터이기 때문에 * 기호는 특정 유형에 대한 포인터를 의미합니다, 당신은 * 기호를

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

을 포함 할 필요가 없습니다.

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