2013-01-20 5 views
0

내 json 파일에 title, subtitleurl이 있습니다.NSJSON 배열 정렬이 올바르게 작동하지 않습니다.

title을 알파벳 순으로 정렬하지만 urltitle으로 정렬되지 않으며 이유를 모르겠습니다.

이 내가 무슨 짓을했는지 있습니다 :

NSDictionary *allDataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil]; 
    NSArray *arrayOfItems = [allDataDictionary objectForKey:@"items"]; 

    for (NSDictionary *diction in arrayOfItems) { 
     NSString *titles = [diction objectForKey:@"title"]; 
     NSString *station = [diction objectForKey:@"url"]; 

     [jsonArray addObject:titles]; 
     [jsonStations addObject:station]; 

// SORT JSON 
     NSArray *sortedArray; 
     sortedArray = [jsonArray sortedArrayUsingComparator:^NSComparisonResult(NSString *title1, NSString *title2) 
         { 
          if ([title1 compare:title2] > 0) 
           return NSOrderedDescending; 
          else 
           return NSOrderedAscending; 
         }]; 
     [jsonArray setArray:sortedArray]; 

는 나는있는 tableView의 첫 번째 항목을 누를 때 나는 총 diffrent title에서 url를 얻을 수. title이 tableView의 url과 일치하도록하려면 어떻게해야합니까?

+0

그래서 당신은'jsonStations' 배열이 자동적으로도 정렬 할 것으로 예상 할 물건을 정리할

NSArray *tableContent = [self sortContentWithJSONData]; 

희망? –

+0

아니요 ..하지만 json 파일의 동일한 개체 아래에 있기 때문에 제목을 따르는 URL이 예상됩니다.하지만 URL을 정렬해도 제목에 맞지 않습니다. [iOS6 JSON 개체 정렬] 가능한 복제본 –

+0

http://stackoverflow.com/questions/16418746/ios6-sort-json-objects) –

답변

0

우선이 방법은 정렬의 이상한 방법처럼 보입니다. 그렇지 않으면 2 개의 배열 대신 사전을 사용해야합니다. 그렇지 않으면 매우 빠르게 지저분 해집니다.

둘째는 현재는 단지 jsonArray을 다시 시도 할 것으로 보인다 대신 jsonArray의 테이블에 sortedArray을 통과해야합니다.

나는이처럼 처리 할 수있는 하나의 방법을 만들 것입니다

-(NSArray *)sortContentWithJSONData { 
    NSDictionary *allDataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil]; 
    NSArray *arrayOfItems = [allDataDictionary objectForKey:@"items"]; 
    NSArray *sortedArray = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:false]; 
    NSMutableArray *outputArray = [[NSMutableArray alloc] init];; 
    for (NSDictionary *diction in arrayOfItems) { 
     NSString *titles = [diction objectForKey:@"title"]; 
     NSString *station = [diction objectForKey:@"url"]; 

     [outputArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:titles, @"title", station, @"station", nil]] 

    } 

    return [outputArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortedArray]]; 

} 

그런 다음 당신은을 사용하여 테이블보기에서 전역 배열 액세스를 설정할 수 있습니다 (I이를 단순화하기 위해 정렬 스크립트의 일부를 제거했다) 다음 ... 조금 :)

관련 문제