Обход NSDictionary в Objective-C - PullRequest
       6

Обход NSDictionary в Objective-C

4 голосов
/ 31 декабря 2011

Есть ли для меня простой способ извлечь определенное значение из NSDictionary, не вызывая objectForKey для каждого уровня, на котором я хочу перейти?

Например:

{
    response = {
        data = {
            foo = "bar";
        };
        user = {
            "first_name" = "Joe";
            "last_name" = "Bloggs";
        };
    };
}

Есть ли простой способ вытащить first_name? На самом деле мои данные гораздо более вложенные, чем я, и я хочу извлекать данные на разных уровнях.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 31 декабря 2011

Код значения ключа - ваш друг!

Используя KVC, вы сможете сделать что-то вроде:

NSString * name = [response valueForKeyPath:@"user.first_name"];

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

Вот документация для valueForKeyPath:.

2 голосов
/ 31 декабря 2011

Использовать valueForKeyPath? Это в документах Apple.

Это для массива, но должно работать аналогично: theocacao.com на NSArray и KVC

Кроме того, убедитесь, что вы используете строки в качестве ключа. Вы можете столкнуться с проблемами.

Для справки по кодированию значения ключа: Документы Apple по кодированию значения ключа

...