Di mana saya harus meletakkan metode yang membuat Permintaan Http untuk mendapatkan data dari layanan web dalam pengembangan iOS?

9

Saya memiliki Model Car di aplikasi iOS saya di mana parameternya seperti nama, tahun, nilai dll diambil dari layanan web untuk mengisi daftar dengan data mobil.

Di mana saya harus meletakkan metode yang asinkron ke server dan mengembalikan array mobil (metode ini sudah mengubah JSON ke array Mobil)?

Pendekatan saya saat ini adalah metode statis di kelas Mobil saya yang menerima HttpClient (jadi saya dapat mengujinya mengejek klien) dan mengembalikan NSArray mobil, apakah ini bagus?

Apa yang telah kalian lakukan dalam situasi ini?

Saya khawatir karena saya baru-baru ini mulai membaca kode bersih yang mengatakan bahwa Kelas harus melakukan hanya satu hal, dan cara saya sekarang tampaknya melakukan 2 hal (menyimpan informasi tentang Mobil dan mendapatkan daftar mobil).

Raphael Oliveira
sumber

Jawaban:

4

Saya akan merekomendasikan Obyek CarBroker yang menangani permintaan untuk Mobil dan memaparkan metode seperti:

  1. getCars - untuk mendapatkan daftar semua mobil.
  2. getCarByID - untuk mobil tertentu.

Lebih lanjut, objek semacam itu dapat menangani permintaan dari broker mobil lain (jika perlu). Apa pun itu, ia memiliki satu bidang tanggung jawab yang nyata - Mobil Pialang - yang bertentangan dengan menjadi Obyek Mobil dengan tanggung jawab Obyek Mobil dan Pialang Objek.

J-Boss
sumber
Ini kedengarannya bagus karena sekarang Anda memiliki objek Mobil bersih yang dapat digunakan kembali. Bagaimana jika Anda mulai menggunakan protokol akses lain untuk mendapatkan data? Dalam skenario yang Anda punya tempat untuk memulai, Anda tahu semua Anda memproses kode \ rules \ logic di satu sisi menerima objek Mobil. Kemudian Anda dapat mulai mengimplementasikan CarBroker menggunakan REST atau apa pun, tetapi Anda sudah setengah jalan dan tidak perlu memprogram ulang dan menguji ulang logika yang secara intrinsik hanya terkait dengan abstraksi Mobil .
Andyz Smith
1

Di sini menyimpan objek lain harus disimpan di suatu tempat yang tidak dapat dijamin bahwa orang tua akan selalu hidup untuk memproses respons.

Saya menyarankan untuk menjaga implementasi ini di kelas tunggal. Menjaga kelas ini juga akan berguna untuk beberapa implementasi metode generik yang dapat disebut sangat sering.

Oruvan
sumber
-1

Anda dapat memanggil metode asinkron dalam metode ViewDidLoad ketika array kembali dari web, menyegarkan tampilan. Anda dapat menyimpan array dalam database, jadi Anda tidak perlu memuat data dari web setiap kali beban Viewcontroller dimuat.

Pelajar
sumber
3
bagaimana ini menjawab pertanyaan yang diajukan?
nyamuk