Codable'a Uyum Sağlama
Türleri otomatik olarak kodlanabilir ve çözümlenebilir hâle getirin.
Codable'a Uyum Sağlama, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
Codable Nedir?
Codable, Encodable & Decodable için bir tür takma adıdır. Bir tür buna uyduğunda Swift, örnekleri harici verilere (JSON gibi) dönüştürebilir ve bunları yeniden oluşturabilir; el ile ayrıştırma kodu yazmanız gerekmez.
import Foundation
struct Book: Codable {
var title: String
var pages: Int
}
print("Book conforms to Codable")Otomatik Sentezleme
Saklanan her özellik kendi başına Codable ise derleyici, kodlama ve kod çözme mantığını sizin için otomatik olarak üretir. Yalnızca özellik listesini yazarsınız; Swift geri kalanını doldurur.
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)JSON Data'ya Kodlama
Codable bir değer, onu JSON Data bloğuna dönüştüren bir JSONEncoder'a verilebilir. JSON metnini incelemek için bu Data'yı bir String'e dönüştürün.
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)!)JSON Data'dan Kod Çözme
Ters yöndeki işlemde JSONDecoder kullanılır. Hedef türü ve ham Data'yı ona verin; böylece tamamen türü belirlenmiş bir Swift değeri yeniden oluşturur.
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)Bir Değerin Gidiş-Dönüşü
Önce kodlayıp sonra kodunu çözmek, eşit bir değer döndürmelidir. Bu gidiş-dönüş, bir türün Codable uyumluluğunun beklendiği gibi çalıştığını doğrulamanın hızlı bir yoludur.
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)Yalnızca Kodlama Yapabilen
Yalnızca iki taraftan birine uyum sağlayabilirsiniz. Encodable, bir türün dışarı yazılabildiği ancak yeniden okunamadığı anlamına gelir; hiç ayrıştırmanız gerekmeyen yanıt modelleri için kullanışlıdır.
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)!)Yalnızca Kodu Çözülebilen
Benzer şekilde Decodable, bir türün kodlanabilir olmadan dış veriden oluşturulmasını sağlar. Yalnızca tükettiğiniz, salt okunur API yükleri için kullanışlıdır.
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)Desteklenen Özellik Türleri
String, Int, Double, Bool, Date ve Data gibi standart kütüphane türlerinin yanı sıra Codable öğelerinden oluşan diziler ve sözlükler de kutudan çıktığı hâliyle Codable'dır.
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)!)Numaralandırmalar da Uyum Sağlayabilir
Ham değerleri olan bir numaralandırma (örneğin String veya Int) otomatik olarak Codable hâline gelir. JSON içinde ham değeri olarak kodlanır.
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)!)Bir Özellik Codable Olmalı
Sentezleme yalnızca saklanan tüm özellikler Codable olduğunda çalışır. Bir özellik olarak özel bir tür kullanılırsa, o türün de uyum sağlaması gerekir; aksi hâlde derleyici sentezleme yapmayı reddeder.
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")Kodlanabilirlik Neden Önemlidir
Codable, elle yazılan serileştirme gereksiz kodlarını ortadan kaldırır, türü tek doğruluk kaynağı olarak korur ve uyuşmazlıkları derleme zamanında yakalar. Swift uygulamalarına veri aktarmanın ve uygulamalardan veri almanın standart yoludur.
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)Hızlı Kontrol: Codable'a Uyum Sağlama
Uyumluluk hakkında öğrendiklerinizi sınayın.
Özet: Codable'a Uyum Sağlama
Swift'te serileştirmenin temellerini öğrendiniz:
Codable=Encodable & Decodable.- Tüm özellikler
Codableolduğunda uyumluluk otomatik olarak sentezlenir. JSONEncoder,Dataüretir;JSONDecoderise değeri yeniden oluşturur.- Standart türler, ham değerli numaralandırmalar ve iç içe
Codabletürleri desteklenir.
Sıkça Sorulan Sorular
“Codable'a Uyum Sağlama” dersi ücretsiz mi?
Evet — “Codable'a Uyum Sağlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Codable'a Uyum Sağlama” dersinde ne öğreneceğim?
Türleri otomatik olarak kodlanabilir ve çözümlenebilir hâle getirin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Codable'a Uyum Sağlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Codable'a Uyum Sağlama
- JSONEncoder ile Kodlama
- JSONDecoder ile Kod Çözme
- İsteğe Bağlı ve İç İçe Türleri İşleme