Получить объект в иерархии NSArray / NSDictionary на основе других объектов в нем - PullRequest
0 голосов
/ 18 октября 2010

Извините за странный заголовок ... все будет объяснено.

По сути, в моем приложении есть структура массива / словаря, подобная этой:

NSArray {

    NSDictionary {
        (NSString *)id;
        (NSDictionary *)dictionary;
    }

    NSDictionary {
        (NSString *)id;
        (NSDictionary *)dictionary;
    }

    NSDictionary {
        (NSString *)id;
        (NSDictionary *)dictionary;
    }

    etc...

}

Надеюсь, что это легко работатьout ...

Теперь у меня есть (NSString *)id, и я хочу получить (NSDictionary *)dictionary, который соответствует ему.

Есть ли способ, которым я могу это сделать?

Спасибо

Том

Ответы [ 2 ]

2 голосов
/ 18 октября 2010

Если ids уникальны, я бы использовал NSDictionary в качестве объекта верхнего уровня вместо NSArray.Таким образом, вы можете просто сделать: [dict objectForKey:stringID]

NSArray здесь на самом деле не имеет смысла, если вы не используете его в качестве источника данных таблиц.

2 голосов
/ 18 октября 2010

Попробуйте что-то вроде этого

for (NSDictionary *dict in dictArray) {
    if ([[dict objectForKey:@"id"] isEqualToString:targetID]){
        return [dict objectForKey:@"dictionary"];
    }
}

Я не скомпилировал код (рядом со мной нет mac), но я думаю, что вы поняли идею. Основная идея состоит в том, чтобы перебрать массив и сравнить строку запроса. Но если у вас много предметов, тогда этот линейный поиск может занять много времени.

...