排序NSJSON数组无法正常工作

时间:2013-01-20 12:01:30

标签: sorting for-loop ios6 nsjsonserialization

在我的json文件中,我有一个titlesubtitleurl

我对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中的第一项时,我会从总差异url获得title。 我该怎么做才能使title与tableView中的url匹配?

1 个答案:

答案 0 :(得分: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];

希望稍微澄清一下:)