Разработка DAO на основе JSON API для iPhone - PullRequest
1 голос
/ 17 июня 2010

Итак, я пытался разработать чистый способ сбора данных для моих моделей на iPhone.Все данные для моего приложения поступают из API-интерфейса JSON.

Так что сейчас, когда виртуальному каналу нужны некоторые модели, он сам вызывает JSON (асинхронно), а когда получает данные, он строит модели.Это работает, но я пытаюсь придумать более чистый метод, с помощью которого DAO получает информацию для меня и возвращает модели асинхронно.

Моя первоначальная мысль - создать протокол для моих DAO,такой, что VC будет создавать экземпляр DAO и делать себя делегатом.Когда вы запрашивали данные [DAOinstance getAllUsers], DAO выполнял всю работу по сетевому запросу, а затем, когда у него были данные, он вызывал метод для своего делегата (VC) для передачи данных.

ИтакЯ думаю, что это классное решение, но понял, что если бы мне нужно было использовать один и тот же DAO для разных целей в одном и том же VC, мой метод делегата должен был бы ветвиться в логике в зависимости от того, какой экземпляр DAO инициировал запрос.

Итакмоей второй мыслью было иметь возможность передавать селекторы «обработчик» объекту DAO в виде типичных шаблонов javascript.Поэтому вместо официального протокола я бы сказал что-то вроде [DAOinstance getAllUsersWithSelector: "TheHandlerFunctionOnMyVC:"] Затем, когда DAO завершит свою сетевую деятельность, он вызовет переданный селектор на VC и передаст данные обратно.

Значит, я здесь совершенно не в том направлении?Похоже, что это может быть хорошим способом.

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

Спасибо!Боб

1 Ответ

2 голосов
/ 20 июня 2010

Довольно часто передают цель (ваш VC здесь) и селектор (метод обработчика), когда вам нужен обратный вызов и вы не хотите переходить на вызывающую функцию метода обработчика.Это называется шаблоном селектора цели.

Помимо этого вы можете проверить RestfulCoreData и CoreResource фреймворки на возможные варианты этого.

Также известная структура ObjectiveResource может обеспечить хорошее понимание.

...