0

私のjsonファイルには、、、、がtitleありsubtitleますurl

を並べ替えて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];

urltableViewの最初の項目を押すと、合計差分からを取得しますtitle。tableViewのtitleに一致させるにはどうすればよいですか?url

4

1 に答える 1

0

まず第一に、これは奇妙なソート方法のように思えます。2つの配列の代わりに辞書を使用する必要があります。そうしないと、物事がすぐに混乱します。

次に、 jsonArrayの代わりにsortedArrayをテーブルに渡す必要があります。現在、 jsonArrayをリセットしようとしているようです。

私はそれをこのように処理するための1つのメソッドを作成します(これを単純化するためにソートスクリプトの一部を削除しました)

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

それが物事を少しクリアすることを願っています:)

于 2015-04-15T22:57:01.647 に答える