Я борюсь с правильным дизайном для делегатов nsxmlparser.
Чтобы построить мою таблицу Foos, мне нужно сделать два типа вызовов веб-сервиса; один для всей таблицы и один для каждой строки. По сути, это главный запрос, а затем подробный запрос, за исключением того, что master-query-result-xml не возвращает достаточно информации, поэтому мне нужно запросить подробности для каждой строки. Я не имею дело с огромным количеством данных.
Во всяком случае - ранее я только что использовал
NSXMLParser *parser = [[NSXMLParser alloc]init];
[parser setDelegate:self];
[parser parse];
и реализовал все соответствующие методы делегата в любом классе, в котором я нахожусь.
В попытке очистить, я теперь создал два отдельных класса делегатов и сделал что-то вроде:
NSXMLParser *xp = [[NSXMLParser alloc]init];
MyMasterXMLParserDelegate *masterParserDelegate = [[MyMasterXMLParser]alloc]init];
[xp setDelegate:masterParserDelegate];
[xp parse];
В дополнение к тому, чтобы быть чище (по моему мнению, по крайней мере), это также означает, что каждая из реализаций -parser:didStartElement
не тратит большую часть времени, пытаясь выяснить, какой xml они анализируют.
Так что теперь настоящая суть проблемы.
До того, как я разделил делегаты, у меня в главном классе, который также реализовывал методы делегатов, был NSMutableArray уровня класса, в который я просто помещал свои объекты objects-from-xml, когда -parser:didEndElement
нашел ' конец каждой записи.
Теперь делегаты находятся в отдельных классах, я не могу понять, как получить параметр -parser: didEndElement в классе делегатов 'detail', который "возвращает" созданный объект вызывающему классу. По крайней мере, не в чистом виде. Я уверен, что смогу сделать это с помощью всяких неприятных методов класса.
Имеет ли вопрос смысл?
Спасибо.