Tôi nên đặt các phương thức tạo Yêu cầu http để lấy dữ liệu từ dịch vụ web trong phát triển iOS ở đâu?


9

Tôi có Model Car trong ứng dụng iOS của mình, nơi các tham số như tên, năm, giá trị, v.v ... được tìm nạp từ dịch vụ web để điền vào danh sách dữ liệu xe.

Tôi nên đặt phương thức đi không đồng bộ đến máy chủ ở đâu và trả về một mảng ô tô (phương thức này đã chuyển đổi JSON thành mảng Xe hơi)?

Cách tiếp cận hiện tại của tôi là một phương thức tĩnh trong lớp Xe hơi của tôi nhận được một HTTPClient (vì vậy tôi có thể kiểm tra đơn vị nó chế nhạo khách hàng) và trả về NSArray của ô tô, điều này có tốt không?

Các bạn đã làm gì trong tình huống này?

Tôi lo ngại vì gần đây tôi đã bắt đầu đọc mã sạch nói rằng Lớp chỉ nên làm một việc, và cách tôi có nó bây giờ dường như làm 2 việc (giữ thông tin về Xe và nhận danh sách xe).

Câu trả lời:


4

Tôi muốn giới thiệu Đối tượng CarBroker xử lý các yêu cầu cho Ô tô và hiển thị các phương thức như:

  1. getCars - để có được danh sách tất cả các xe.
  2. getCarByID - cho một chiếc xe cụ thể.

Hơn nữa một đối tượng như vậy có thể xử lý yêu cầu từ các nhà môi giới xe hơi khác (nếu cần). Dù bằng cách nào, nó có một lĩnh vực trách nhiệm thực sự - Môi giới Ô tô - trái ngược với việc trở thành Đối tượng Xe hơi với trách nhiệm của Đối tượng Xe hơi và Nhà môi giới Đối tượng.


Điều này nghe có vẻ tốt vì bây giờ bạn có một đối tượng Xe sạch có thể được tái sử dụng. Điều gì nếu bạn bắt đầu sử dụng một giao thức truy cập khác để nhận dữ liệu? Trong kịch bản đó, bạn có một nơi nào đó để bắt đầu, bạn biết tất cả những gì bạn xử lý \ quy tắc \ mã logic ở một bên chấp nhận các đối tượng Xe. Sau đó, bạn có thể bắt đầu thực hiện lại CarBroker bằng REST hoặc bất cứ điều gì, nhưng bạn đã đi được nửa đường và không phải lập trình lại và kiểm tra lại logic về bản chất chỉ liên quan đến sự trừu tượng của Xe .
Andyz Smith

1

Ở đây việc giữ một đối tượng khác cần được giữ lại ở một nơi không thể đảm bảo rằng cha mẹ sẽ luôn sống để xử lý phản hồi.

Tôi đề nghị duy trì việc thực hiện này trong một lớp đơn. Giữ lớp này cũng sẽ hữu ích cho một số thực hiện phương thức chung có thể được gọi rất thường xuyên.


-1

Bạn có thể gọi phương thức không đồng bộ bên trong phương thức ViewDidLoad khi mảng trả về từ web, làm mới khung nhìn. Bạn có thể lưu mảng trong cơ sở dữ liệu, do đó bạn sẽ không cần tải dữ liệu từ web mỗi khi tải Trình điều khiển.


3
Làm thế nào để trả lời câu hỏi này?
gnat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.