0

두 개의 다른 섹션으로 UITableView을 만들려고합니다. 내 관리 대상 개체의 특성을 그룹화 할 수 있다는 것을 알고 있습니다.NSFetchedResultsController를 사용하여 섹션 화 된 UITableView 만들기

[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
         managedObjectContext:_context 
         sectionNameKeyPath:@"name" 
         cacheName:@"uploadProperties"]; 

을 그리고 내가 좋아하는 secionts의 수를 반환 : 예를 들어 나는 name 당 그들을 내가 할 거라고 그룹하려는 경우

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [[_fetchedResultsController sections] count]; 
} 

문제는 그래도 내가하지 않으려는 것을를 속성 (예 : 이름)별로 그룹화하십시오. 특정 값, 즉 pud_id = 0이있는 부분과 pud_id > 0 인 부분을 그룹화합니다.

어떻게하면됩니까? where 절의 종류를 사용할 수 있습니까? 아니면 내가 내 관리 객체에 속성을 작성하고 sectionNameKeyPath 등이 사용할 수 있습니다 :

- (BOOL) hasPudZero { 
    if (self.pud_id == 0) 
     return YES; 
    return NO; 
} 

?

입력 해 주셔서 감사합니다.

+1

이전의 경험에서 fetchedresultscontroller는 아주 간단한 쿼리에 대해서만 유용하다는 것을 알았습니다.이 경우에는 직접 가져 와서 두 개의 객체 배열을 사용할 수있는 다른 ano로 배열해야합니다. 귀하의 데이터 소스 방법. – Rog

답변

0

아마도 두 문자열 중 하나를 반환하는 NSString 유형의 임시 속성을 만들 수 있습니까? 당신의 NSFetchedResultsController를 만들 때

- (NSString *)sectionIdentifier 
{ 
    [self willAccessValueForKey:@"sectionIdentifier"]; 
    NSString *tmp = [self primitiveValueForKey:@"sectionIdentifier"]; 
    [self didAccessValueForKey:@"sectionIdentifier"]; 

    if (!tmp) { 
     if (self.pud_id == 0) { 
      tmp = @"SectionOne"; 
     } else { 
      tmp = @"SectionTwo"; 
     } 
     [self setPrimitiveValue:tmp forKey:@"sectionIdentifier"]; 
    } 
    return tmp; 
} 

다음 sectionNameKeyPath:@"sectionIdentifier"를 사용합니다. put_id의 값이 변경되면 sectionIdentifier의 프리미티브 값을 nil로 다시 설정해야합니다.

관련 문제