2015-02-26 1 views
0

Я застрял здесь некоторое время, пробовав много вещей без всякого успеха. Так я есть вложенный словарь, который выглядит следующим образом:Зацикливание через вложенный NSMutableDictionary и фильтрация некоторых предметов

{"Div 3 Mellersta G\u00f6taland, herrar": { 
    "0": {"awayScore": "0", "homeTeam": "Hestrafors IF", "tempTime": "12:00", "homeScore": "0", "awayTeam": "Gunnilse IS", "time": "90'", "events": []}, 
    "1": {"awayScore": "0", "homeTeam": "Lerums IS", "tempTime": "13:00", "homeScore": "0", "awayTeam": "Skara FC", "time": "44'", "events": []}, 
    "2": {"awayScore": "0", "homeTeam": "Vara SK ", "tempTime": "14:00", "homeScore": "0", "awayTeam": "IFK Falk\u00f6ping FF", "time": "14:00", "events": []}, 
    "3": {"awayScore": "0", "homeTeam": "Holmalunds IF Alings\u00e5s", "tempTime": "15:00", "homeScore": "0", "awayTeam": "Lunden \u00d6ver\u00e5s BK", "time": "15:00", "events": []}, 
    "4": {"awayScore": "0", "homeTeam": "IFK Tidaholm", "tempTime": "16:00", "homeScore": "0", "awayTeam": "S\u00e4vedalens IF", "time": "16:00", "events": []}}, 
"Div 4 A Herrar": { 
    "0": {"awayScore": "0", "homeTeam": "SKIF Semberija", "tempTime": "17:00", "homeScore": "0", "awayTeam": "Floda BoIF", "time": "17:00", "events": []}, 
    "1": {"awayScore": "0", "homeTeam": "Partille IF FK", "tempTime": "18:00", "homeScore": "0", "awayTeam": "Kode IF", "time": "18:00", "events": []}, 
    "2": {"awayScore": "0", "homeTeam": "IK Kongah\u00e4lla", "tempTime": "19:00", "homeScore": "0", "awayTeam": "Romelanda UF", "time": "19:00", "events": []}}} 

Что мне нужно сделать, чтобы перебрать все пункты здесь, чтобы получить доступ пары ключ/значение времени и, если значение времени имеет значение от 0 до 90 я хочу его сохранить.

Важно то, что структура не изменяется. Под этим я имею в виду позволяет сказать, что, например, мы сделали итерации по всем пунктам и проверяется значение времени, то новый словарь будет выглядеть следующим образом:

{"Div 3 Mellersta G\u00f6taland, herrar": { 
    "0": {"awayScore": "0", "homeTeam": "Hestrafors IF", "tempTime": "12:00", "homeScore": "0", "awayTeam": "Gunnilse IS", "time": "90'", "events": []}, 
    "1": {"awayScore": "0", "homeTeam": "Lerums IS", "tempTime": "13:00", "homeScore": "0", "awayTeam": "Skara FC", "time": "44'", "events": []}, 
}} 

все остальные элементы отфильтрованы с первых двух пунктов в Div 3 Mellersta были единственными со временем значение 0 - 90.

Примечание оно должно быть записано в Objective-C

Спасибо вам всем!

+0

Вы можете использовать 'NSPredicate'. – Larme

+0

В этот момент мне действительно понравились бы примеры кода, если бы вы могли его предоставить. Но пока я буду смотреть на него, если никто не узнает об этом. Спасибо @Larme –

ответ

1

Попробуйте этот код

NSMutableDictionary *newDict = [NSMutableDictionary dictionary]; 
[rootDict enumerateKeysAndObjectsUsingBlock:^(NSString *key1, NSDictionary *dict1, BOOL *stop) { 
    [dict1 enumerateKeysAndObjectsUsingBlock:^(NSString *key2, NSDictionary *dict2, BOOL *stop) { 
     NSString *time = dict2[@"time"]; 
     if([time integerValue] >= 0 && [time integerValue] <= 90 && ![time containsString:@":"]) { 
      if(!newDict[key1]) { 
       newDict[key1] = [NSMutableDictionary dictionary]; 
      } 
      newDict[key1][key2] = dict2; 
     } 
    }]; 
}]; 
+0

Я не знаю, как это сказать. Но я люблю тебя. спасибо –

Смежные вопросы