Kesesuaian dengan Codable
Buat tipe dapat dikodekan dan didekodekan secara otomatis.
Kesesuaian dengan Codable adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Apa Itu Kemampuan Pengodean Data
Codable adalah alias tipe untuk Encodable & Decodable. Ketika sebuah tipe mematuhinya, Swift dapat mengubah instans menjadi data eksternal (seperti JSON) dan membuatnya kembali—tanpa memerlukan kode penguraian manual.
import Foundation
struct Book: Codable {
var title: String
var pages: Int
}
print("Book conforms to Codable")Sintesis Otomatis
Jika setiap properti tersimpan juga merupakan Codable, kompiler menyintesis logika pengodean dan dekode untuk Anda. Anda hanya perlu menulis daftar properti—Swift melengkapi sisanya.
import Foundation
struct User: Codable {
var name: String
var age: Int
var isActive: Bool
}
let u = User(name: "Ada", age: 36, isActive: true)
print(u)Pengodean ke Data JSON
Nilai Codable dapat diberikan kepada JSONEncoder, yang menghasilkan objek Data. Konversikan Data tersebut menjadi String untuk memeriksa teks JSON.
import Foundation
struct User: Codable {
var name: String
var age: Int
}
let u = User(name: "Ada", age: 36)
let data = try JSONEncoder().encode(u)
print(String(data: data, encoding: .utf8)!)Dekode dari Data JSON
Perjalanan sebaliknya menggunakan JSONDecoder. Berikan jenis target dan Data mentah kepadanya, lalu decoder akan menyusun kembali nilai Swift yang bertipe lengkap.
import Foundation
struct User: Codable {
var name: String
var age: Int
}
let json = "{\"name\":\"Ada\",\"age\":36}"
let data = json.data(using: .utf8)!
let u = try JSONDecoder().decode(User.self, from: data)
print(u.name, u.age)Melakukan Putar Balik Nilai
Pengodean lalu dekode seharusnya menghasilkan kembali nilai yang sama. Putar balik ini merupakan cara cepat untuk memastikan konformansi Codable suatu jenis berjalan sesuai harapan.
import Foundation
struct Point: Codable {
var x: Int
var y: Int
}
let p = Point(x: 3, y: 7)
let data = try JSONEncoder().encode(p)
let back = try JSONDecoder().decode(Point.self, from: data)
print(back.x, back.y)Hanya Encodable
Anda dapat memenuhi hanya salah satu bagiannya. Encodable berarti suatu jenis dapat ditulis, tetapi tidak dapat dibaca kembali—berguna untuk model respons yang tidak perlu Anda uraikan.
import Foundation
struct Receipt: Encodable {
var item: String
var total: Double
}
let r = Receipt(item: "Coffee", total: 4.5)
let data = try JSONEncoder().encode(r)
print(String(data: data, encoding: .utf8)!)Hanya Decodable
Demikian pula, Decodable memungkinkan suatu jenis dibentuk dari data eksternal tanpa dapat dienkode. Ini berguna untuk muatan data API yang hanya Anda konsumsi dan bersifat hanya-baca.
import Foundation
struct Config: Decodable {
var version: Int
var debug: Bool
}
let json = "{\"version\":2,\"debug\":true}"
let data = json.data(using: .utf8)!
let c = try JSONDecoder().decode(Config.self, from: data)
print(c.version, c.debug)Jenis Properti yang Didukung
Jenis dari pustaka standar seperti String, Int, Double, Bool, Date, Data, URL, serta array dan kamus yang elemennya Codable, semuanya langsung mendukung Codable.
import Foundation
struct Profile: Codable {
var name: String
var tags: [String]
var scores: [String: Int]
}
let p = Profile(name: "Sam", tags: ["a", "b"], scores: ["math": 90])
let data = try JSONEncoder().encode(p)
print(String(data: data, encoding: .utf8)!)Enumerasi Juga Dapat Memenuhi Codable
Enumerasi dengan nilai mentah seperti String atau Int secara otomatis menjadi Codable. Enumerasi tersebut dienkode sebagai nilai mentahnya dalam JSON.
import Foundation
enum Status: String, Codable {
case active, paused, done
}
struct Task: Codable {
var title: String
var status: Status
}
let t = Task(title: "Ship", status: .active)
let data = try JSONEncoder().encode(t)
print(String(data: data, encoding: .utf8)!)Properti Harus Codable
Sintesis hanya berfungsi jika semua properti tersimpan adalah Codable. Jika jenis khusus digunakan sebagai properti, jenis tersebut juga harus memenuhi konformansi—jika tidak, kompiler menolak melakukan sintesis.
import Foundation
struct Address: Codable {
var city: String
}
struct Person: Codable {
var name: String
var address: Address
}
let p = Person(name: "Lee", address: Address(city: "Rome"))
print(try JSONEncoder().encode(p).count, "bytes")Mengapa Codable Penting
Codable menghilangkan kode serialisasi berulang yang ditulis secara manual, menjadikan jenis sebagai satu-satunya sumber kebenaran, dan mendeteksi ketidakcocokan saat kompilasi. Ini adalah cara standar untuk memindahkan data ke dalam dan ke luar aplikasi Swift.
import Foundation
struct Settings: Codable {
var theme: String
var fontSize: Int
}
let s = Settings(theme: "dark", fontSize: 14)
let data = try JSONEncoder().encode(s)
let back = try JSONDecoder().decode(Settings.self, from: data)
print(back.theme, back.fontSize)Pemeriksaan Cepat: Memenuhi Codable
Uji pemahaman Anda tentang konformansi.
Ringkasan: Memenuhi Codable
Anda telah mempelajari dasar-dasar serialisasi dalam Swift:
Codable=Encodable & Decodable.- Konformansi disintesis jika semua properti adalah
Codable. JSONEncodermenghasilkanData;JSONDecodermenyusun kembali nilainya.- Jenis standar, enumerasi bernilai mentah, dan jenis
Codablebertingkat semuanya didukung.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kesesuaian dengan Codable” gratis?
Ya — teks lengkap “Kesesuaian dengan Codable” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Kesesuaian dengan Codable”?
Buat tipe dapat dikodekan dan didekodekan secara otomatis. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Kesesuaian dengan Codable” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Kesesuaian dengan Codable
- Pengodean dengan JSONEncoder
- Pendekodean dengan JSONDecoder
- Menangani Tipe Opsional dan Bersarang