2010-10-18 1 views
0

Извините за странное название ... все будет объяснено.Получить объект в иерархии NSArray/NSDictionary на основе других объектов внутри него

В принципе у меня есть структура массива/словаря, как это в моем приложении:

NSArray { 

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

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

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

    etc... 

} 

Надежда, который легко работать ...

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

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

Спасибо

Том

ответ

2

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

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

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

+0

это лучший способ? нет «более простого» способа вообще? –

+0

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

2

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

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

+0

Хм, это хорошая идея, но теперь я создал весь свой код вокруг этой концепции. Вероятно, была очень хорошая причина, почему я не делал этого так, чтобы начать. Я не могу вспомнить, что это такое. –

+0

Комментарии твой друг;) Да, я не рекомендую менять свою кодовую базу. Но что-то иметь в виду на будущее. Единственный раз, когда я переношу в 'NSArray', когда мне это нужно для' UITableView'. –

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

  • Нет связанных вопросов^_^