2014-02-20 3 views
1

내가 가진 배열이 작동하지 않습니다 같은 여러 사전 : 내가 lowRate 키를 사용하여이 배열을 정렬하려고정렬 배열

{ 
    highRate = "600.49"; 
    hotelId = 439607; 
    hotelRating = "2.5"; 
    latitude = "12.97153"; 
    longitude = "80.15096"; 
    lowRate = "600.49"; 
    name = "Hotel Kingss Park"; 
    proximityDistance = "17.999475"; 
    thumbNailUrl = "http://images.travelnow.com/hotels/7000000/6510000/6500300/6500296/6500296_3_t.jpg"; 
    tripAdvisorRating = "4.0"; 
}, 
    { 
    highRate = "990.0"; 
    hotelId = 327929; 
    hotelRating = "2.0"; 
    latitude = "13.06931"; 
    longitude = "80.2706"; 
    lowRate = "450.45"; 
    name = "Mallika Residency"; 
    proximityDistance = "1.6274245"; 
    thumbNailUrl = "http://images.travelnow.com/hotels/3000000/2960000/2958400/2958303/2958303_2_t.jpg"; 
    tripAdvisorRating = "2.5"; 
} 

.

NSSortDescriptor *rating_Sort = [NSSortDescriptor sortDescriptorWithKey:@"lowRate" ascending:NO]; 
NSArray *descriptorArray = [NSArray arrayWithObject:rating_Sort]; 

NSArray *sortedArray = [self.tblDisplayArray sortedArrayUsingDescriptors:descriptorArray]; 

여기 self.tblDisplayArray 내 배열입니다.

그러나 결과에 적절한 정렬 된 배열이 표시되지 않습니다.

왜 이런 일이 발생합니까?

답변

3

변경이

NSSortDescriptor *rating_Sort = [NSSortDescriptor sortDescriptorWithKey:@"lowRate.doubleValue" ascending:NO]; 

그리고 그것은 작동하고 벌금을.

5

숫자가 아닌 알파벳순으로 정렬하려고하므로 모두 문자열입니다.

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

중 하나를 시도하거나 @ "대신 NSString ... NSNumbers (@)를 사용하십시오.

@Rajesh가 정확합니다. 모든 숫자가 정수가 아니므로 doubleValue를 사용해야합니다. 코드를 업데이트했습니다!

희망이 도움이됩니다. :)

0

문자열의 배열은 실제로 double 값입니다. 따라서 아래와 같이 설명자를 정렬합니다.

NSSortDescriptor *aSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"sort" ascending:YES comparator:^(id obj1, id obj2) { 
    if ([obj1 doubleValue] < [obj2 doubleValue]) { 
     return (NSComparisonResult)NSOrderedAscending; 
    } 
    return (NSComparisonResult)NSOrderedSame; 
    }]; 
    sortedArray = [yourArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]]; 
0

@Georgegreen은 모든 문자열이므로 숫자가 아닌 알파벳순으로 정렬하려고합니다.

하지만 정수 대신 int 또는 float를 사용해야합니다.

NSSortDescriptor *desc = [[NSSortDescriptor alloc]initWithKey:@"doubleValue" ascending:YES]; 
0

또는 단지는 수행

NSArray *sortedArray = [[yourTempArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];