2011-04-28 4 views
4

이것은 핵심 데이터 작업으로 파악할 수없는 것입니다. NSFetchedResultsControllerDelegate를 사용하여 작업하고 싶습니다. 지금까지 보았던 일반적인 코드는 이해하기 쉽지만 항상 하나의 엔티티 모델을 기반으로합니다. 그래서 당신은 당신의 테이블에 모든 "이벤트"를 보여주고 싶습니다, 당신은 이벤트 엔티티에 대한 가져 오기 요청을하고 그곳에 가면 설정됩니다.1 대 다수 관계가있는 NSFetchedResultsController

것은, 내 모델입니다 :

City (one-to-one) Company (one-to-many) Employees 

내 표는 직원을 표시해야하지만, 페치 다음 직원을 회사를 검색하기 위해,시에 기초해야하고 것 , 권리? 나는 이것에서 완전히 길을 잃었다, 나는 단지 가져 오기를하는 방법을 보지 못한다.

City 나 Company를 가져 와서 NSMutableSet에 Employees를 넣으면 모든 authomatic UITableViewController 동기화가 느슨해지지 않으니까요? 내가 이런 식으로 할 경우 예를 들어, 난, 난 당신이 도시의 속성이나 회사 이름 속성에 필터를 사용하여 객체 관리 "회사"를 가져 오는해야한다고 생각

- (NSInteger)tableView:(UITableView *)tableView 
    numberOfRowsInSection:(NSInteger)section { 
    id <NSFetchedResultsSectionInfo> sectionInfo = 
     [[_fetchedResultsController sections] objectAtIndex:section]; 
    return [sectionInfo numberOfObjects]; 
} 
+0

NSFecthedResultController + Sections에주의하십시오. 나는 나쁜 기억을 가지고 있습니다. iOS3.2 이전에 (애플 SDK에서) 심각하게 도청당했습니다. 3.2 이후에는 개선되었다고 생각합니다. 여전히 문제가 있습니다. 나는 최근 버전으로 시도하지 않았다. NSFetchedResultController 지금 가능한 피하고 있어요 ... –

답변

2

데이터 모델에는 특정 개체를 가져올 때 관련된 모든 개체에 즉시 액세스 할 수 있도록 상호 관계가 있어야합니다. 대부분의 경우에 당신이 Employee 객체가있는 경우

City{ 
    company<-->Company.city 
} 

Company{ 
    city<-->City.company 
    employees<-->>Employee.company 
} 

Employee{ 
    company<<-->Company.employees 
} 

그래서, 당신은 self.company와 회사와 self.company.city에 의해 도시를 찾아 (: 귀하의 경우

, 상호 관계 데이터 모델과 같을 것 실제 self은 필요하지 않으며 일러스트레이션을 위해 사용합니다. Company 개체가있는 경우 self.employees의 직원과 self.city의 직원을 찾습니다. City 개체가있는 경우 self.company.employees 인 모든 직원을 찾을 수 있습니다.

관계는 실제로 코어 데이터의 중심에 객체 그래프를 생성합니다. 페치를 사용하여 그래프에서 한 그룹의 개체를 찾은 다음 해당 개체에서 관계를 바깥쪽으로 "걷고"모든 관련 데이터를 찾습니다. 두 방향의 관계를 앞뒤로 돌아 다니는 것이 가능한 상호 관계입니다.

0

같은 일을 할 수 없습니다 아니면 둘다. 회사와 직원간에 일대 다 관계를 설정 한 경우 회사 관리 개체에는 목록에 필요한 모든 직원 개체가 포함 된 NSSet 속성이 있어야합니다.

+0

그게 내가 지금까지 한 짓이야,하지만 그런 식으로 UITableViewController 함께 모든 out-of-the-box syncin 놓치지 않습니다 (NSMutableSet 변경, 그냥 fetchrequest 대신 듣고있다.) 예를 들어, 나는 수 없습니다 tableView에서 사용하려면 numberOfRowsInSection : – ferostar

+0

NSFetchedResultsController를 사용하여 UITableViewController를 관리합니다. http://developer.apple.com/library/ios/#documentation/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html –

+0

예, 알고 있습니다. 내가 알지 못하는 것은 엔티티가 다른 엔티티 안에있을 때 이것을 사용하는 방법입니다. – ferostar

4

결코 늦지 않는 것이 좋습니다.

predicate = [NSPredicate predicateWithFormat:@"(ProvinceToCounty == %@)", selectedObject]; 

이 링크에서 이동 술어를 사용 http://blog.sallarp.com/iphone-core-data-uitableview-drill-down/

당신이 제네릭 클래스를 만들어 다른 부모 - 자식 개체에 대한이 작업을 삭제할 수 있는지 확인하기 위해 계획하는 경우 당신의 캐시 이름 NSFetchedResultsController.

관련 문제