2013-02-02 4 views
0

나는 친구 목록의 nsmutable 배열을 가지고 있습니다. 자신의 위도가 &입니다. 나는 그 배열을 autor에서 거리의 오름차순으로 정렬하고 싶습니다. 나는 autor와 친구들의 거리 값을 알아 냈습니다. `내가 그 일을하고 방법을 자신의 distances.This의 상승에 해당 배열을 정렬 할거리의 오름차순으로 NSmutable 배열을 정렬하는 방법은 무엇입니까?

for(int i=0;i<[searchfriendarray count];i++) 
     { 
      NSDictionary *payload =[searchfriendarray objectAtIndex:i]; 
      NSLog(@"%@",payload); 
      NSString *memberid = [payload objectForKey:@"userID"]; 
      CLLocation *locationofauthor; 
      CLLocation *locationoffriends; 
      if([memberid isEqualToString:uidstr]) 
      { 

       NSString *latofauthor = [payload objectForKey:@"latitude"]; 
       NSString *longofauthor=[payload objectForKey:@"longitude"]; 
       double latofauthordouble = [latofauthor doubleValue]; 
      double longofauthordouble=[longofauthor doubleValue];; 
      locationofauthor = [[CLLocation alloc] initWithLatitude:latofauthordouble longitude:longofauthordouble]; 

      } 
      else 
      { 
      NSString *latoffriends = [payload objectForKey:@"latitude"]; 
      NSString *longoffriends=[payload objectForKey:@"longitude"]; 
       double latoffriendsdouble = [latoffriends doubleValue]; 
       double longoffriendsdouble=[longoffriends doubleValue];; 
       locationoffriends = [[CLLocation alloc] initWithLatitude:latoffriendsdouble longitude:longoffriendsdouble]; 

       } 
      CLLocationDistance distance = [locationofauthor distanceFromLocation:locationoffriends]; 

} 

은`어떤 몸은 내가 거리의 ascecending 순서 내 배열을 정렬하는 데 도움이 수 있습니까?

+0

CoreData에서이 배열을 가져오고 있습니까? –

+0

아니 .... 서비스에서 반환? – hacker

+0

당신의 주요 문제는 무엇입니까? CLLocationDistance 거리에서 모든 거리를 얻을 수 있습니다. 배열에 저장하십시오. 이것은 이중 값입니다. 너는 어떻게 두 배 가치를 분류하는 지 모른다? – CRDave

답변

2

두 개체간에 비교 코드 블록을 제공 할 수 있습니다. 그런 다음 NSArray는 배열을 정렬하는 데 필요한만큼 블록을 호출합니다.

NSArray sortedArray = [yourUnsortedArray sortedArrayUsingComparator:^NSComparisonResult(id   obj1, id obj2) { 
     /*some code to compare obj1 to obj2. 
     for instance, compare the distances of obj1 to obj2. 
     Then return an NSComparisonResult 
     (NSOrderedAscending, NSOrderedSame, NSOrderedDescending);*/ 
    }]; 

p.s. 변경 가능한 배열을 다시 얻으려면, 반환 된 객체에 mutableCopy을 호출하면됩니다.

0
NSSortDescriptor * descLastname = [[NSSortDescriptor alloc] initWithKey:@"active" ascending:YES]; 
[livevideoparsingarray sortUsingDescriptors:[NSArray arrayWithObjects:descLastname, nil]]; 
[descLastname release]; 
videoparsing = [livevideoparsingarray copy]; 

livevideoparsingarray 정렬 & 활성 I 정렬이 배열 내 태그는 내가 가진 내 배열입니다. 요구 사항에 따라 변경됩니다.

관련 문제