0Pricing
Swift Academy · Pelajaran

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.
  • JSONEncoder menghasilkan Data; JSONDecoder menyusun kembali nilainya.
  • Jenis standar, enumerasi bernilai mentah, dan jenis Codable bertingkat 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

  1. Kesesuaian dengan Codable
  2. Pengodean dengan JSONEncoder
  3. Pendekodean dengan JSONDecoder
  4. Menangani Tipe Opsional dan Bersarang
← Kembali ke Swift Academy