1

나는 핵심 데이터의 엔티티에서이 구조를 가지고 :정렬 nsfetchedresultscontroller

ID Region SubRegion SubRegionID CellText 
1  Face  Mouth   2    something 
2  Face  Eyes   1    ... 
3  Face  Nose   4    ... 
... 

을하지만 내있는 tableview (nsfetchedresultscontroller)이이 방식으로 분류 할 : 각 섹션 내부

: ID 속성으로 분류 세포를 섹션 tableView : SubRegion 이름으로 정렬되었지만 SubRegionID로 정렬되었습니다.

어떻게하면됩니까? 시간에 대한

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription 
           entityForName:@"DataBase" inManagedObjectContext:context]; 
[fetchRequest setEntity:entity]; 

NSPredicate *requestPredicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"(Region like '%@')", @"Face"]]; 
[fetchRequest setPredicate:requestPredicate]; 

NSSortDescriptor *ID = [[NSSortDescriptor alloc] 
          initWithKey:@"ID" ascending:YES]; 

[fetchRequest setSortDescriptors:[NSArray arrayWithObjects: ID, nil]]; 

[fetchRequest setFetchBatchSize:10]; 

fetchedResultsController = 
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
            managedObjectContext:context sectionNameKeyPath:@"SubRegion" 
               cacheName:nil]; 

fetchedResultsController.delegate = self; 

감사 : 지금까지 내가이 일을 해요하지만 난 모르는 subregionID에 의해 섹션 제목을 정렬하는 가장 좋은 방법입니다!

답변

0

조건부에 중복이 있습니다.

NSPredicate *requestPredicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"(Region like '%@')", @"Face"]]; 

보다는

는 그냥

NSPredicate *requestPredicate = 
    [NSPredicate predicateWithFormat:@"%K == %@", @"Region", @"Face"]; 

그것은 또한 당신이 당신의 NSFetchedResultsController을 설정하는 방법으로해야 할 수 있어야한다. sectionNameKeyPath을 "SubRegionID"가 아닌 "SubRegionID"로 설정해야합니다. tableView datasource 메서드 titleForSection:에서 ID를 기반으로 하위 영역의 이름을 반환해야합니다.

+0

귀하의 조언에 감사드립니다. 그러나 문제는 내가 사용한 정렬 논리로 여전히 남아 있습니다. 셀 ID로 정렬 된 있지만 섹션 이름 SubRegionID에 의해 정렬되지 않습니다 ... 나는 subregionID 및 해당 섹션 내에서 ID로 정렬 된 셀로 정렬 된 얼굴 subregions (섹션)이 필요합니다. 조언 있니? 감사! – Samui

+0

NSFetchedResultsController 설정 방법과 관련이 있습니다. ''SubRegion ''이 아니라''SubRegionID ''로'sectionNameKeyPath'를 설정해야합니다. tableView 데이터 소스에서'titleForSection :'메소드를 사용하면 ID를 기반으로 하위 영역의 이름을 반환해야합니다. – Mundi

+0

그게 내가 사용한 방법이야. 하지만 sortdescriptors를 직접 사용하여 정렬 할 수 있다고 생각했습니다. 조언 해 주셔서 감사합니다! – Samui

관련 문제