Веб-служба iOS: переместить вызов подключения из AppDelegate - PullRequest
0 голосов
/ 02 февраля 2012

Итак, я работал над извлечением данных из веб-службы и использованием их в своем приложении (например, отображение группы имен в UITableView) ...

Руководство, которому я следовал, чтобы настроить это, настроить NSURLConnection в AppDelegate, затем имел XMLParser и объект для хранения извлеченных данных ... Теперь я хочу переместить настройку соединения и вызов из AppDelegate в собственный класс ... Но я немного не уверен в подходе ...

Я думаю о чем-то вроде:

Child (объект для хранения данных)

ChildParser (NSXMLParser)

SomeViewController (получает уведомление об обновлении от анализатора и использует данные)

ChildMsg (настройте соединение и сообщение SOAP здесь)

Хорошо, перед тем как AppDelegate установил соединение и сообщение SOAP в didFinishLaunchingWithOptions ... и в connectionDidFinishLoading он инициализировал ChildParser ... затем в viewController он инициализировал анализатор с помощью:

appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

и я мог бы получить доступ к дочерним объектам данных ...

Хорошо, так что я думаю, что мне не следует настраивать соединение в AppDelegate, поскольку у меня будет 3-4 разных соединения и куча SOAP-сообщений для каждого соединения, так что это быстро запутать класс AppDelegate ... Поэтому я думаю, что я создам класс для каждого из различных вызовов веб-служб, а затем инициализирую эти классы в viewController, когда они мне понадобятся ... Но как мне это сделать?

До того, как у меня было это в моем парсере:

- (XMLParser *) initXMLParser {

    self = [super init];

    if(self)
    {
        appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    }
    return self;
}

, который я использовал для инициализации в AppDelegate, так что я предполагаю, что мне понадобится нечто подобное в ChildMsg

Этот бессвязный, вероятно, не имеет смысла, но, надеюсь, вы поняли, чего я хочу достичь, и можете подтолкнуть меня в правильном направлении ...

Краткое резюме: я анализирую данные для веб-службы и хочу получить данные в viewController, но я хочу установить соединение и сообщение SOAP в другом месте, чем AppDelegate. .

Заранее спасибо

1 Ответ

0 голосов
/ 02 февраля 2012

Я бы предложил попробовать следовать подходу MVC (Model View Controller) здесь.Я думаю, что у вас есть достаточно четкое представление о том, каковы ваши представления и классы контроллеров;модель - это место, куда вы можете поместить свой SOAP / XML-код (или в класс, к которому вы обращаетесь из модели).

В этом случае добавьте ivar в ваш контроллер, чтобы представить класс вашей модели.Класс модели должен предлагать методы для обновления своего содержимого (т. Е. Получения данных из веб-службы) и извлечения отдельных фрагментов данных, которые ваш контроллер затем делает доступными для представления, которым он управляет.Класс модели затем инкапсулирует ваш код обработки соединения / запроса и (возможно, если я правильно понимаю) также получит доступ к ChildParser для создания дочерних объектов (которые представление будет использовать для отображения своего содержимого).

Этопросто грубый набросок того, как все будет работать.Если вам нужна дополнительная информация о MVC, вы можете посмотреть Wikipedia .Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...