NSFetchRequest
을 사용하여 Core Data
스토리지에서 데이터를 가져 와서 해당 데이터를 array
에 저장합니다. 모두 훌륭합니다. 다음 단계로, 나는 array
지금처럼 NSSortDescriptors
을 사용하여 해당 정렬 할 :NSComparator 블록이 호출되지 않았습니다.
array = [array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"score" ascending:NO],
[NSSortDescriptor sortDescriptorWithKey:@"score" ascending:NO comparator:^NSComparisonResult(id obj1, id obj2) {
if ([[[array objectAtIndex:[obj2 integerValue]] valueForKey:@"lessImportantItems"] containsObject:[array objectAtIndex:[obj1 integerValue]]]) {
return (NSComparisonResult)NSOrderedAscending;
} else {
return (NSComparisonResult)NSOrderedDescending;
}
}],
[NSSortDescriptor sortDescriptorWithKey:@"createdAt" ascending:NO], nil]];
내가 두 번째 NSSortDescriptor
의 NSComparator
블록이 호출되지 것입니다이 문제 (내가 NSLog
에 시도). 내 데이터 구조에 몇 가지 배경을 제공하기 위해, 여기에 관련 Core Data
객체 그래프 섹션의 :
어떤 응용 프로그램이하는 것입니다 그것은 서로 항목을 비교합니다. 첫 번째 단계로 한 쌍의 비교에서 우승자는 score
증가합니다. 또한 우승자와 패자 사이에 일대일 lessImportantItems
관계를 추가합니다. 그래서 배열에서 먼저 score
으로 정렬하려고 시도한 다음 score
이 같을 때, 또한 쌍으로 된 우선 순위로 정렬하고 정렬합니다.
아마도 score
을 비교기 key
두 번 연속 사용했기 때문일 수 있습니다. 그러나 다른 한편으로는 NSComparator
은 relationship
을 key
으로 전달할 수 없습니다.
나는 이것을 왜곡 할 수 없습니다. 누구든지 아이디어가 있습니까? 아니면 정렬을 위해 다른 접근 방식을 취해야합니까?
원하는 최종 결과는 항목을 정렬하는 것입니다. 어떤 방법으로? 또는 당신의 변형? – geekchic
글쎄, 정렬 설명자로 말하면 다음과 같습니다 : (1) 점수 별 정렬, (2) 점수가 동일하면 더 중요한 일대일 정렬, (3) 날짜순 정렬 (현실적으로 꼬리의 항목과 관련이 있습니다 (즉, 동일한 점수가 0 인 항목 - 아직 비교되지 않은 항목). 네가 묻고있는 건가? – artooras