2016-06-23 4 views
0

私はNSArrayといくつかの辞書を持っています。これはいくつかのキーと値を持っています。私はテーブルビューで表示しています。セクションヘッダータイトルは、その辞書のキーの値の1つ、つまりddDateの値のようなものです。問題は同じddDate値が同じセクションの下に来る必要があることです。だから私はそれに応じて私の配列を作成する必要があります。オブジェクトの配列内のkeyの値がiOSと同じかどうかを確認しますか?

responseDict (
     { 
     xx = 16; 
     yy = 17; 
     aa = 0; 
     bb = 6; 
     cc = 2016; 
     ddDate = "17-06-2016"; 
    }, 
     { 
     xx = 17; 
     yy = 17; 
     aa = 0; 
     bb = 6; 
     cc = 2016; 

     ddDate = "17-06-2016"; 

    }, 
     { 
     xx = 18; 
     yy = 17; 
     aa = 0; 
     bb = 6; 
     cc = 2016; 

     ddDate = "18-06-2016"; 

    } 

つまり、日付はセクションタイトルです。 1つのセクションの下で同じddDate値を持つ人。どのように私はこれを達成することができる誰も私を導くことができますか?

+0

を使用していていますか? –

+0

@NiravDoctorwala obj-C – hacker

+0

'responseDict'(実際には配列)を反復する - 辞書から' ddDate'値を抽出し、それを 'NSMutableArrays'を保持する別の辞書のキーとして使用する - この辞書から配列を取得する(または、このキーがない場合は新しい配列を作成し)、 'responseDict'要素(実際には辞書です)をこの配列に追加します。完了したら、キーを辞書から配列に抽出します(これはすべてあなたの 'ddDate'値です)。あなたのセクションにこの配列を使用し、行のセクション値に基づいて辞書から配列を取得する – Paulw11

答えて

1

あなたの目標は、2つのデータ構造を構築することです。 ddDate値の配列。これはあなたのセクション情報と配列辞書で、ddDateの値をキーとします。これはあなたの行データになります。

@property (strong, nonatomic) NSArray *sections; 
@property (strong, nonatomic) NSDictionary *rows; 

- (void)processJSONData:(NSArray *)inputArray { 

    NSMutableDictionary *extractedData = [NSMutableDictionary new]; 
    for (NSDictionary *dict in inputArray) { 
     NSString *ddDate = dict["ddDate"]; 
     NSMutableArray *rowArray = extractedData[ddDate]; 
     if (rowArray == nil) { 
      rowArray = [NSMutableArray new]; 
      extractedData[ddDate] = rowArray; 
     } 
     [rowArray addObject:dict]; 
    } 

    self.sections = [extractedData allKeys]; 
    self.rows = [NSDictionary dictionaryWithDictionary:extractedData]; 
} 

self.sectionsの配列を並べ替えることをお勧めします。

セクションの数がself.sections.countで、セクションの行数がSWIFTやObjective-Cのをself.rows[self.sections[indexPath.section]].count

+0

u plsを明確にすることができますUはextractedData [ddDict]、またはextractedData [dict ];? – hacker

+0

申し訳ありませんが、 'ddDate' – Paulw11

+0

私はどのように私はこれをcellforrowatindexpathでインデックスpath.sectionで処理するのかを明確にすることができます – hacker

0

カスタム配列を作成して日付を比較し、日付が同じ場合は、1つのヘッダータイトルの下に追加し、次のヘッダータイトルに移動する必要があります。私はここにショートカットが表示されません。

関連する問題