2016-10-26 2 views
-2

Так что, если у меня есть словарь вроде следующего:Получить объект из массива словарей с определенной парой значений ключа?

{ 
"banners": [ 
    { 
    "imageUrl": "www.google.com", 
    "destination": "home", 
    "position": 1 
    }, 
    { 
    "imageUrl": "www.reddit.com", 
    "destination": "work", 
    "position": 2 
    }, 
    { 
    "imageUrl": "www.imgur.com", 
    "destination": "play", 
    "position": 3 
    } 
] 
} 

есть способ для меня, чтобы сказать, «Дайте мне объект словаря, где значение для„положение“ключа = 3 без использования для цикла ?

+0

Да, но имейте в виду, что _someone_ должен смотреть на все словари в массиве, пока не найдет его, даже если цикл не будет явно и непосредственно в вашем коде. Таким образом, понятие «без использования цикла for» выглядит глупо. Невозможно, чтобы какая-то магическая сила попала прямо в словарь. – matt

+0

@matt я понимаю. Мне просто интересно, существует ли уже хороший заводский метод, который выглядел более чистым, и я мог бы узнать об этом, что также поможет в более сложных случаях. – user1416564

ответ

4

Давайте подумаем об этом. Оооо, есть много способов! удивительно, что, глядя на мгновение в документации скажу.

то, что вы, как значение ключа banners является массив словарей. Итак, вы ищете метод NSArray. Метод NSArray, такой как filteredArrayUsingPredicate:!

Итак, вы можете написать NSPredicate, который описывает position как равный 3, и вы получите NSArray из всех словарей, где это правда (в данном случае массив одного словаря).

О, вот еще одна возможность: indexOfObjectPassingTest:. При этом вы предоставляете блок, который указывает, что position словаря словаря 3, и вы вернете индекс этого словаря в этом массиве (а именно 2 в этом случае).

Я мог бы продолжать и продолжать, но не лучше ли вам научиться читать документацию самостоятельно? Here it is.

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