Sudah barang pasti jika kita menulis kode yang berhubungan dengan API Service kita perlu mendefinisikan model nya agar rapi dan jelas.
contoh kata kita memiliki response seperti berikut:
{
"success": true,
"message": "User logged in successfully",
"data": {}
}
dimana results
akan selalu dinamis dan berubah ubah tergantung dari /path
apa yang kita hit dan response apa yang dikembalikan.
namun demi mengurangi redundansi kode sebaiknya kita membuat model generic nya pada class BaseResponse.swift seperti berikut:
struct BaseResponse<T: Decodable>: Decodable {
var success: Bool
var message: String
var data: T
}
nah andai kita data memiliki object seperti berikut:
{
"success": true,
"message": "User logged in successfully",
"data": {
"name": "Nam Do Wan",
"age": 17
}
}
maka kita hanya perlu membuat sebuah class baru misal User.swift :
struct User: Decodable {
var name: String
var age: Int
}
ketika kita memerlukan model nya kita cukup menulisnya sebagai BaseResponse<User>
contoh kasus saat kita ingin decode json menjadi model biasa kita akan menemui kode seperti :
let decodedData = try JSONDecoder().decode(UserResponse.self, from: data)
namun saat ini kita bisa langsung mengubahnya menjadi:
let decodedData = try JSONDecoder().decode(BaseResponse<User>.self, from: data)
Sekian tips yang bisa saya share. semoga bermanfaat dan bisa menjadi nilai lebih untuk kode yang kita tulis. Thank you.