Я думаю, что ОП хочет пройти "тестирование", выполнив поиск "OIK74".
Первое, что я хотел бы предложить, это сделать ключ OIK74, а затем извлечь значение строки тривиально. Если у каждой из ваших строк есть один и тот же ключ Exercise, это кажется излишним, когда кажется, что ID на самом деле является идентификатором, который должен быть уникальным и достаточно хорошо служить в качестве ключа.
Если вы настроены на это расположение данных (которое я скажу еще раз, я думаю, что следует вернуться к нему, если это возможно), тогда вы смотрите на что-то отличное от простого бурения по траектории. Вы ищете значение одноуровневого узла в словаре для вашей конкретной строки. NSXMLDocument может сделать это довольно легко с запросами xpath, я полагаю. Концептуальный барьер здесь заключается в том, что NSDictionary отражает структуру списков, но NSDictionary на самом деле не является XML. У вас нет тегов и значений. У вас есть ключи и ценности. В XML / plist-представлении NSDictionary тегами являются <key>
и <value>
, а ваши ключи и значения NSDictionary являются значениями в этих тегах.
Я не уверен на 100%, какова внутренняя структура данных, которые вы наметили, но похоже, что у вас есть что-то вроде
root = (
item1 = {
Exercise = "testing",
ID = "OIK74"
}
item2 = {
Exercise = "testing3",
ID = "424RE"
}
item3 = {
Exercise = "testing5",
ID = "RET23"
}
)
в текстовом формате. Это правильно? Если так, то я бы предложил полностью перестроить это в гораздо более простую структуру:
{
"OIK74" = "testing",
"424RE" = "testing3",
"RET23" = "testing5"
}
Если у вас есть больше данных для этих идентификаторов, вы можете установить словарь в качестве значения для ключа следующим образом:
{
"OIK74" = {
"Exercise" = "testing",
"OtherDataPoint" = "othervalue"
},
"424RE" = {
"Exercise" = "testing3",
"OtherDataPoint" = "othervalue3"
},
"RET23" = {
"Exercise" = "testing5",
"OtherDataPoint" = "othervalue5"
}
}
Так как вы упомянули, что значение OIK74, которое вы ищете, является ключевым, этот подход имеет гораздо больше смысла, IMHO С этой новой структурой данных вы получите значение «testing» с [dictionary valueForKey:@"OIK74"];
или [dictionary valueForKeyPath:@"OIK74.Exercise"];
соответственно. Надеюсь, это поможет.