2014-01-26 2 views
1

У меня есть следующий NsArray, и я хочу отсортировать его и создать вспомогательный массив, который содержит определенные пары ключ-значение.Как создать дополнительный NSArray, который включает пары ключ-значение?

{ 
scores =  (
      { 
     category = 2; 
     "league_code" = epl; 
     "team_away" = Everton; 
     "team_home" = Liverpool; 
    }, 
      { 
     category = 2; 
     "league_code" = epl; 
     "team_away" = Fulham; 
     "team_home" = "Swansea City"; 
    }, 
      { 
    category = 3; 
    "league_code" = ita; 
    "team_away" = Torino; 
    "team_home" = Milan; 
}, 
    { 
    category = 3; 
    "league_code" = ita; 
    "team_away" = Lazio; 
    "team_home" = Juve; 
} 

}}

, и я хотел бы создать новый массив или просто изменить массив, чтобы включить только объекты с «league_code» = EPL ключ.

Так что я хочу, чтобы получить

{ 
scores =  (
      { 
     category = 2; 
     "league_code" = epl; 
     "team_away" = Everton; 
     "team_home" = Liverpool; 
    }, 
      { 
     category = 2; 
     "league_code" = epl; 
     "team_away" = Fulham; 
     "team_home" = "Swansea City"; 
    } 

}}

Я попытался преобразовать его использовать dictionaryWithObjects: forKeys, но это не сработало.

+1

Научитесь читать выход NSLog. Это NSDictionary, который содержит NSArray, содержащий объекты NSDictionary. –

+0

Я читал NSLog, но он был запутан, и я получаю данные от json. – milan7

+0

Когда вы разбираете JSON, он попадает в NSArrays и NSDictionarys. В JSON массив окружен '[]', в дампе NSLog NSArray окружен '()'. Оба объекта JSON и их соответствующие NSDictionarys окружены символами '{}'. –

ответ

4
NSMutableArray* newArray = [NSMutableArray array]; 
NSArray* oldArray = outerDictionary[@"scores"]; 
for (NSDictionary* dictEntry in oldArray) { 
    NSString* leagueCode = dictEntry[@"league_code"]; 
    if ([leagueCode isEqualToString @"epl"]) { 
     [newArray addObject:dictEntry]; 
    } 
} 

Было ли это так сложно?

+0

Хорошо, это было легче, чем я думал! благодаря – milan7

0

Loop Through и если он соответствует вашим условиям, добавьте его в словарь. Я рекомендую for-loop, но любой цикл.

+0

но как я могу проверить «league_code» = epl part? – milan7

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