Реструктурировать массив - PullRequest
1 голос
/ 28 ноября 2011

Я получаю массив возврата по json,

[{"date": "2011-01-01", "title": "aaa"},
 {"date": "2011-01-01", "title": "bbb"},
 {"date": "2011-01-01", "title": "ccc"},
 {"date": "2011-01-02", "title": "ddd"},
 {"date": "2011-01-02", "title": "eee"},
 {"date": "2011-01-03", "title": "fff"},
 {"date": "2011-01-03", "title": "ggg"}]

Я использую этот код для получения значения:

NSDictionary *jsonDictionary = [jsonArray objectAtIndex:i];
NSString *date = [jsonDictionary objectForKey:@"dispalyDate"];
NSString *title = [jsonDictionary objectForKey:@"title"];

Проблема в том, как я могу реструктурировать массив или создать новый массив в соответствии с той же датой, например,

date = 2011-01-01
aaa、bbb、ccc

date = 2011-01-02
ddd、eee

date = 2011-01-03
fff、ggg

1 Ответ

3 голосов
/ 28 ноября 2011

Примерно так ...

NSMutableDictionary *titlesByDate = [NSMutableDictionary dictionary];
for (NSDictionary *entry in jsonDictionary) {
    NSString *date = [entry objectForKey:@"date"];
    NSMutableArray *titles = [titlesByDate objectForKey:date];
    if (!titles) {
        titles = [NSMutableArray array];
        [titlesByDate setObject:titles forKey:date];
    }
    [titles addObject:[entry objectForKey:@"title"]];
}

Теперь у вас есть словарь, в котором ключи - это строки даты, а значения - заголовочные массивы.Если вы действительно хотите получить результат массива, вы можете сделать следующее:

NSMutableArray *array = [NSMutableArray array];
for (NSString *date in titlesByDate) {
    [array addObject:[NSDictionary dictionaryWithObjectsAndKeys:
        date, @"date",
        [titlesByDate objectForKey:date], @"titles",
        nil];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...