2013-05-25 2 views
0

부호로 데이터를 정렬하려고합니다. SQLite 함수에서 "sign"은 잘 동작합니다. 그러나 핵심 데이터에서 나는 이것을 반복 할 수 없다. 나는이 tryed했습니다코어 데이터 기호 정렬 설명자

NSSortDescriptor* signSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"id" ascending:NO comparator:^NSComparisonResult(NSNumber* obj1, NSNumber* obj2) { 
     int val1 = sign([obj1 integerValue]); 
     int val2 = sign([obj2 integerValue]); 
     return (val1 < val2) ? NSOrderedAscending : (val1 > val2) ? NSOrderedDescending : NSOrderedSame; 
    }]; 
    fetchRequest.sortDescriptors = @[signSortDescriptor]; 

아이폰 OS 6.1에서 작동하지 않습니다 (오류 : "지원되지 않는 NSSortDescriptor (비교기 블록이 지원되지 않음)"), 아이폰 OS 5.1에 대한 벌금 (나는 그것이 일종의 후 결과의 배열을 얻을 생각),하지만 확실

이를 Tryed :

NSSortDescriptor* signSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"sign(id)" ascending:NO]; 
    fetchRequest.sortDescriptors = @[signSortDescriptor]; 

그러나 얻을 오류 ...

+0

당신이 시도한 방법 : http://stackoverflow.com/questions/12800062/nssortdescriptor-issue –

답변

0

당신은 기호에 의해 특별한 비교가 필요하지 않습니다. idNSNumber 인 경우 id으로 값을 정렬하면됩니다. 그들은 또한 기호에 따라 분류 될 것이고 나는 성과에 영향을 미칠 것이라고 생각하지 않는다.

+0

나는 복잡한 정렬 설명자를 가지고 있습니다. 기호 ID가 작아지면 두 번째 - 절대 오름차순으로 정렬합니다. 예 : 3 4 7 0 -2 -5 -10. 내 문제를 간단하게 해결할 수 있지만 DB에서 기호 정렬을 수행하는 방법을 알고 싶습니다. – Sk0prion

+0

@ Sk0prion : 코어 데이터 가져 오기 요청에 Objective-C 기반 정렬 설명자를 사용할 수 없습니다. 영구 속성과 특정 비교 함수 만 사용할 수 있습니다 (http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/Articles/cdPersistentStores.html#//apple_ref/doc/uid/TP40002875- SW11). 특별한 정렬 순서가 필요하면이 순서를 암시하는 또 다른 속성을 추가하거나 객체를 가져온 후 메모리에서 정렬해야합니다. –

관련 문제