Де я повинен розмістити методи, які роблять Http-запит на отримання даних з веб-сервісу в розробці iOS?


9

У моєму додатку iOS є Model Car, де такі параметри, як ім’я, рік, значення тощо, отримуються з веб-сервісу для заповнення списку даними про автомобілі.

Куди слід поставити метод, який асинхронно переходить на сервер і повертає масив автомобілів (цей метод вже перетворює JSON в автомобільний масив)?

Мій сучасний підхід - це статичний метод у моєму класі автомобілів, який отримує HttpClient (тому я в змозі перевірити його, знущаючись над клієнтом) та повертаючи NSArray автомобілів, це добре?

Що ви зробили в цій ситуації?

Я стурбований тим, що нещодавно я почав читати чистий код, який говорить, що Клас повинен робити лише одне, а так, як у мене зараз, здається, робити 2 речі (зберігати інформацію про Авто та отримати список машин).

Відповіді:


4

Я б порекомендував CarBroker Object, який обробляє запити на автомобілі та викриває такі методи, як:

  1. getCars - для отримання списку всіх автомобілів.
  2. getCarByID - для конкретного автомобіля.

Далі такий об’єкт може обробляти запит інших автомобільних посередників (якщо це потрібно). Так чи інакше, це реальна зона відповідальності - брокерські автомобілі - на відміну від автомобільного об'єкта з обов'язками автомобільного об'єкта та об'єкта брокера.


Це добре звучить, адже тепер у вас є чистий автомобільний предмет, який можна використовувати повторно. Що робити, якщо ви почнете використовувати інший протокол доступу для отримання даних? У тому сценарії, де вам потрібно десь почати, ви знаєте, що все, що ви обробляєте \ правила \ логічний код з одного боку, приймає об'єкти Car. Тоді ви можете почати повторно впроваджувати CarBroker за допомогою REST або будь-якого іншого, але ви вже на півдорозі і не потрібно перепрограмувати та повторно перевірити логіку, яка суто пов'язана лише з абстракцією автомобіля .
Andyz Smith

1

Тут потрібно зберігати інший об’єкт десь, що не може гарантувати, що батько завжди буде живим для обробки відповіді.

Я пропоную тримати цю реалізацію в одиночному класі. Збереження цього класу також буде корисним для впровадження загальних методів, які можна назвати дуже часто.


-1

Ви можете викликати асинхронний метод всередині методу ViewDidLoad, коли масив повертається з Інтернету, оновіть вигляд. Ви можете зберегти масив у базі даних, тому вам не потрібно буде завантажувати дані з Інтернету щоразу, коли завантажується Viewcontroller.


3
як це відповідає на поставлене запитання?
гнат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.