2016-03-21 7 views
-1

配列をソートしたい。ここに私の配列構造です。配列と日付のある辞書を並べ替える方法Key

(

    (

     //SubArray 
) 

{ 
    date =“2016-03-16”; 
} 

) 

------ 
------ 

ソートディスクリプタを使用してソートするにはどうすればよいですか?

可能ですか? (または)

配列構造を変更する必要がありますか(サブ配列を辞書に移動する)。

+0

私は理由がわかりました –

答えて

1

アレイにあなたの辞書を取り、以下は、この

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES]; 
yourArray=[yourArray sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]]; 
dictionaryArray = [yourArray copy]; 
+0

@idevloper、しかし、その日付に属する最上位の配列が必要です –

+0

あなたの答えはその質問に関連する仕事ではありません、あなたはこれを見ています '( //配列 ) '、これをソートする方法 –

0

それが役立つならば、私の回答が長いソリューション、それをこれを試しているが、それは短い賢明日付

// my Json responce in string 
    NSString *Str = @"{\"Array\":[{\"date\":\"01/15/2016\",\"Subarr\":[\"A\",\"B\"]},{\"date\":\"01/06/2016\",\"Subarr\":[\"C\",\"D\"]},{\"date\":\"16/02/2015\",\"Subarr\":[\"E\",\"F\"]},{\"date\":\"22/02/2016\",\"Subarr\":[\"G\",\"H\"]}]}"; 
    // convert in to nsdata 
    NSData *data = [Str dataUsingEncoding:NSUTF8StringEncoding]; 
    // final json responce 
    id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
    // create a new Dictionary for shorting 
    NSMutableDictionary *Dic = [[NSMutableDictionary alloc] init]; 
    // get all main array 
    NSArray *Temp1 = [json valueForKey:@"Array"]; 
    for (int i = 0; i<Temp1.count; i++) { 
     id subjson = Temp1[i]; 
     // get date and store in key string 
     NSString *Key = [subjson valueForKey:@"date"]; 
     // get sub array and store in array object 
     NSArray *Object = [subjson valueForKey:@"Subarr"]; 
     // now store object with key is date 
     [Dic setObject:Object forKey:Key]; 
    } 
    // after get all key from created Dictionary 
    NSArray *keys = [Dic allKeys]; 
    // short key date wise 
    NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { 
     NSDateFormatter *format = [[NSDateFormatter alloc] init]; 
     [format setDateFormat:@"DD/MM/YYYY"]; 
     NSDate *FirstDate = [format dateFromString:a]; 
     NSDate *SecondDate = [format dateFromString:b]; 
     return [FirstDate compare:SecondDate];; 
    }]; 
    // you can get short array by date wise 
    NSLog(@"%@",sortedArray); 
    // now you want array which is short wise date 
    NSMutableArray *Final_shortarr = [[NSMutableArray alloc] init]; 
    for (int i=0; i<sortedArray.count; i++) { 
     NSString *Key = [sortedArray objectAtIndex:i]; 
     [Final_shortarr addObject:[Dic objectForKey:Key]]; 
    } 
    // this array give final short datewise array 
    NSLog(@"%@",Final_shortarr); 
である配列を取得するために私を助けを行います
+0

辞書にサブアレイを追加したようですか? –

+0

yesキーがあるのは –

+0

辞書を移動するサブアレイのような配列構造を変更した場合、The Solutionは上記の答えと同じように非常に簡単です。 –

関連する問題