У меня есть эти данные, которые я получаю из фида XML и анализирую как NSDictionaries. Структура данных выглядит следующим образом:
item = {
address = {
text = "1 Union Street";
};
data = {
text = "Hello.";
};
event_date = {
text = "2012-02-27";
};
event_type = {
text = pubQuiz;
};
latitude = {
text = "57.144994";
};
longitude = {
text = "-2.10143170000003";
};
name = {
text = "Mobile Tester";
};
picture = {
text = "public://pictures/event_default.png";
};
time = {
text = "23.00";
};
vname = {
text = Test;
};
}
//More items
Каждый подраздел, т. Е. Адрес, данные, дата события и т. Д., Являются NSDictonaries.
Я бы хотел перебрать всю коллекцию и взять «текст» внутри каждого из разделов, чтобы создать массив «элементов» с этими свойствами. Я пытался использовать структуру цикла for..in в Objective-C, но пока не добился успеха. У кого-нибудь есть несколько указателей? Я счастлив прочитать любые хорошие учебники или примеры, как пройтись по вложенным NSDictionaries.
EDIT:
Хорошо, после анализа XML я получил эту структуру там. То, что я хотел бы сделать, это пройти через структуру "item", чтобы извлечь поля "text" из всех внутренних словарей - что-то вроде этого:
foreach(item in array of dictionaries) {
myItem.address = item.address.text;
myItem.data = item.data.text;
...
}
И так далее. Надеюсь, это немного прояснит ситуацию.
Итак, часть, в которой я застрял, - это то, где я хочу установить свойства элемента при обходе NSDictionaries. Это то, что я до сих пор:
for(NSDictionary *item in self.eventsArray) {
for (NSDictionary *key in [item allKeys]) {
NSLog(@"%@", key);
id value = [item objectForKey:key];
if ([value isKindOfClass:[NSDictionary class]]) {
NSDictionary* newDict = (NSDictionary*)value;
for (NSString *subKey in [newDict allKeys]) {
NSLog(@"%@", [newDict objectForKey:subKey]);
}
}
}
}
Какие выходы:
адрес
1 Юнион-стрит
данные
Привет.
...
Я просто не уверен, как выбрать правильный атрибут в объекте, который я создаю, чтобы установить обязательное свойство, если это имеет смысл?