내가 지금과 같은 핵심 데이터 모델을 가지고 ...NSFetchedResultsController : 정렬 기술자 및 섹션
[Country] <--->> [League] <--->> [Match]
그리고 나는 UITableView
에 Matches
를 표시 할 NSFetchedResultsController
을 사용하고 있습니다.
이전에 수 백만 번 해 보았지만 몇 가지 이유로 섹션이 잘못되어 왜 작동하지 않습니다.
나는
NSSortDescriptor *countrySD = [NSSortDescriptor sortDescriptorWithKey:@"league.country.name" ascending:YES];
NSSortDescriptor *leagueSD = [NSSortDescriptor sortDescriptorWithKey:@"league.name" ascending:YES];
NSSortDescriptor *dateSD = [NSSortDescriptor sortDescriptorWithKey:@"startDate" ascending:YES];
request.sortDescriptors = @[countrySD, leagueSD, dateSD];
먼저 내가 올바른 순서대로 넣어 가지고 검사 할 ...과 같이 정렬 디스크립터를 만들었습니다. 먼저 country.name
으로 정렬 한 다음 league.name
으로 정렬 한 다음 startDate
으로 정렬해야합니다.
즉
Albania
에서 뭐든지Spain
아무것도 앞에 와야한다.- 단일 국가의 경우
League 1
에있는 내용은 모두League 2
에 있어야합니다. - 단일 리그에서 모든 경기는 가장 빠른 순서대로
startDate
순서로 표시되어야합니다. 그럼이 함께NSFRC
을 만드는거야
...
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.moc sectionNameKeyPath:@"league.leagueID" cacheName:nil];
그래서이해야 그룹 다른 league.leagueID
값이 일치하여 테이블. 그것은 비록 작동하지 않습니다
Albania - League 1
12:00
13:00
Albania - League 2
09:00
14:00
France - League 1
09:00
Spain - A League
08:00
12:00
Spain - B League
09:00
그것은 ... 같은 것을해야한다. 같은 리그에서 여러 헤더를 얻습니다. 일치 항목 중 일부는 잘못된 헤더 등 아래에 표시됩니다.
잘못된 리그 아래에 나타나는 경기의 값 (NSLogged)을 확인했으며 실제로 올바른 리그를 가졌습니다. 따라서 그들은 Spain - A League
이더라도 France - League A
(예를 들어) 아래에 표시됩니다.
어떻게 해결할 수 있습니까?
감사합니다. 가져 오기 요청으로 그것을 수행하고 내 자신의 컨텍스트 감시자를 설정하는 데 의지해야 할 것 : ( – Fogmeister
@ Fogmeister : 또는 '10'을 보유하는 추가 특성을 추가하여이를 섹션 키 및 첫 번째 정렬로 사용할 수 있습니다 설명자. –
오, 그게 계획처럼 들리네. 리그 수업에 그걸 넣을까요? – Fogmeister