2009-09-02 2 views
8

주어진 NSManagedObject에 대해 특정 NSManagedObject에 대한 키의 집합 또는 배열 (특성 이름)을 반환하는 메서드가 있습니까? 나는 NSObject & NSManagedObject 워드 프로세서를 둘러 보았지만 아무 것도 발견하지 못했습니다. NSDictionary 'allKeys'와 같은 기능이 필요한 것입니다. 즉.주어진 NSManagedObject에 대한 키의 배열 또는 배열을 검색하는 방법이 있습니까?

myArrayOfKeys = [myDict allKeys] 

많은 수의 속성을 처리하는 더 쉬운 방법이 있어야한다고 가정합니다. 일련의 키를 반복 처리합니다.

답변

14

-[NSManagedObject entity]NSEntityDescription을 반환합니다. 그러면 속성을 찾을 수 있습니다. 특히 속성 이름을 원할 경우 -[NSEntityDescription attributesByName], 각 키가 속성 이름이고 각 값이 NSAttributeDescription 인 사전을 얻을 수 있습니다.

4

제임스의 조언을 기반으로 다음과 같이 작성했으며 다른 사람들이 코드를 문제 해결하고 대답을 사용하는 것이 유용 할 수 있다고 가정합니다. 제임스 감사합니다!

// 애플의 마스터 세부 사항 템플릿 프로젝트 에서 - (무효) insertNewObject (ID) 보낸 사람 {

//! Apple standard template code 
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; 
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; 

//! Slowburner addition to view the managedObject's keys 
NSEntityDescription *attDesc = [newManagedObject entity]; 
NSDictionary *attributesByName = [attDesc attributesByName]; 
NSLog(@"Names:%@",[attributesByName allKeys]); 

//! shortcut to avoid whatever problem you're troubleshooting 
return; 
관련 문제