2013-01-20 44 views
0

在我的json文件中,我有一個title,subtitleurl排序NSJSON陣列無法正常工作

我對title進行排序以按字母順序設置項目,但url未按title排序,我不知道爲什麼。

這是我做了什麼:

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,我得到一個總指出錯誤title得到url。 我應該怎麼做才能讓title匹配tableView中的url

+0

所以,做你所期望的'jsonStations'要排序的數組自動的呢? – 2013-01-20 12:05:43

+0

沒有..但我有點期待url跟隨標題,因爲它在json文件中的同一個對象下..但是即使當我排序的URL他們不適合標題 –

+0

可能重複的[iOS6排序JSON對象]( http://stackoverflow.com/questions/16418746/ios6-sort-json-objects) –

回答

0

首先,這似乎是一種奇怪的排序方式,您應該使用字典而不是2個數組,否則事情會非常迅速地變得混亂。

其次,你需要你的sortedArray傳遞表,而不是jsonArray目前它似乎只是想重置jsonArray

我將創建一個方法來處理它像這樣(我已經剝離了一些你的排序腳本來簡化這個)

-(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]]; 

} 

然後,你可以使用設置在表視圖中的全局數組和訪問下面...

NSArray *tableContent = [self sortContentWithJSONData]; 

希望掃清了一點東西:)