iOS 개발에서 웹 서비스에서 데이터를 가져 오기 위해 Http 요청을 작성하는 메소드를 어디에 배치해야합니까?


9

iOS 응용 프로그램에 Model Car가 있는데 이름, 연도, 값 등과 같은 매개 변수가 자동차 서비스로 목록을 채우기 위해 웹 서비스에서 가져옵니다.

비동기식으로 서버로 이동하고 자동차 배열을 반환하는 메소드를 어디에 두어야합니까 (이 메소드는 이미 JSON을 Car 배열로 변환합니다)?

내 현재 접근 방식은 HttpClient (클라이언트를 조롱하는 단위 테스트를 수행 할 수 있음)를 수신하고 자동차의 NSArray를 반환하는 Car 클래스의 정적 메소드입니다.

이 상황에서 너희들은 무엇을 했습니까?

나는 최근에 클래스가 한 가지만 수행해야한다는 깨끗한 코드를 읽기 시작했기 때문에 걱정하고 있으며 지금 가지고있는 방법은 2 가지 일을하는 것으로 보입니다 (자동차에 대한 정보를 보유하고 자동차 목록을 얻는 것).

답변:


4

Cars 요청을 처리하고 다음과 같은 메소드를 노출하는 CarBroker Object를 권장합니다.

  1. getCars- 모든 자동차 목록을 가져 옵니다 .
  2. getCarByID- 특정 차량용.

또한 이러한 객체는 다른 자동차 중개인의 요청을 처리 할 수 ​​있습니다 (필요한 경우). 어느 쪽이든 Car Objecting과 Object Broker의 책임을 갖는 Car Object와는 대조적으로 하나의 실제 책임 영역 인 Brokering Cars 가 있습니다.


재사용 할 수있는 깨끗한 Car 객체가 생겼기 때문에 좋은 소리입니다. 데이터를 얻기 위해 다른 액세스 프로토콜을 사용하기 시작하면 어떻게됩니까? 이 시나리오에서는 시작하는 곳이 있는데, 한쪽의 논리 코드 처리 / 규칙 \ 논리 코드는 Car 객체를 받아들입니다. 그런 다음 REST 등을 사용하여 CarBroker를 다시 구현하기 시작할 수 있지만 이미 중간에 있으므로 Car 추상화 와 본질적으로 관련된 논리를 다시 프로그래밍하고 다시 테스트 할 필요가 없습니다 .
Andyz Smith

1

여기에 응답을 처리하기 위해 부모가 항상 살아있을 것이라고 보장 할 수없는 다른 객체를 유지해야합니다.

이 구현을 싱글 톤 클래스로 유지하는 것이 좋습니다. 이 클래스를 유지하는 것은 매우 자주 호출 될 수있는 일반적인 메소드 구현에도 유용합니다.


-1

웹에서 배열이 반환되고 뷰를 새로 고칠 때 ViewDidLoad 메서드 내에서 비동기 메서드를 호출 할 수 있습니다. 배열을 데이터베이스에 저장할 수 있으므로 Viewcontroller가로드 될 때마다 웹에서 데이터를로드 할 필요가 없습니다.


3
이것은 질문에 어떻게 대답합니까?
gnat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.