我有這樣一個如此核心數據模型......NSFetchedResultsController:排序描述符和部分
[Country] <--->> [League] <--->> [Match]
而我使用的是NSFetchedResultsController
顯示Matches
爲UITableView
。
我已經做了這一百萬次之前,但由於某些原因部分出錯了,我不能解決原因。
我創建了排序的描述是這樣的...
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:或者,您可以添加一個額外的屬性,其中包含'。'並將其用作部分鍵和第一個排序描述符 –
哦,這聽起來像是一個計劃,我會把它放到聯盟班嗎? – Fogmeister