SwiftData @Model dan ModelContext
Mendefinisikan model dengan macro @Model dan menjalankan CRUD melalui ModelContext.
SwiftData @Model dan ModelContext adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.
Pengantar SwiftData
SwiftData (iOS 17+) adalah kerangka kerja persistensi modern yang native-Swift milik Apple dan dibangun di atas Core Data.
import SwiftData
// Main concepts: @Model, ModelContainer, ModelContextMakro @Model
Anotasikan kelas dengan @Model agar menjadi model SwiftData yang dapat dipersistenkan. Properti secara otomatis menjadi atribut tersimpan.
@Model
class Item {
var name: String
var createdAt: Date
init(name: String) {
self.name = name
self.createdAt = Date()
}
}Penyiapan ModelContainer
Buat ModelContainer dengan tipe model Anda dan masukkan ke lingkungan SwiftUI.
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: Item.self)
}
}ModelContext dalam Tampilan
Gunakan @Environment(\.modelContext) untuk mengakses konteks model dalam tampilan SwiftUI.
struct AddItemView: View {
@Environment(\.modelContext) private var context
func addItem() {
context.insert(Item(name: "New Item"))
}
}Menyisipkan dan Menghapus
Panggil context.insert untuk menambahkan dan context.delete untuk menghapus model. Perubahan disimpan secara otomatis secara default.
let item = Item(name: "Coffee")
context.insert(item) // add
context.delete(item) // remove
// Auto-saved on next run loop@Query untuk Pengambilan Data
@Query dalam tampilan SwiftUI secara otomatis mengambil dan memperbarui data saat data yang mendasarinya berubah.
struct ItemList: View {
@Query(sort: \Item.createdAt, order: .reverse) var items: [Item]
var body: some View {
List(items) { item in Text(item.name) }
}
}Memfilter dengan Predikat
Teruskan #Predicate ke @Query untuk memfilter hasil secara deklaratif.
@Query(filter: #Predicate<Item> { $0.name.contains("Swift") })
var swiftItems: [Item]Penyimpanan Manual
Panggil try context.save() saat Anda memerlukan kontrol eksplisit atas waktu persistensi perubahan.
do {
try context.save()
} catch {
print("Save error: \(error)")
}@Attribute untuk Penyesuaian
Gunakan @Attribute pada properti untuk menyesuaikan perilaku persistensi (misalnya, unik atau penyimpanan eksternal).
@Model
class User {
@Attribute(.unique) var email: String
@Attribute(.externalStorage) var avatar: Data?
init(email: String) { self.email = email }
}Properti @Transient
Tandai properti dengan @Transient untuk mengecualikannya dari persistensi.
@Model
class Session {
var token: String
@Transient var isExpired: Bool = false
init(token: String) { self.token = token }
}Konfigurasi ModelContainer
Konfigurasikan container dengan skema eksplisit dan rencana migrasi untuk model berversi.
let schema = Schema([Item.self, User.self])
let config = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
let container = try ModelContainer(for: schema, configurations: config)Pemeriksaan Cepat
Pembungkus properti SwiftUI mana yang secara otomatis mengambil model SwiftData dan memperbarui tampilan saat data berubah?
Ringkasan Pelajaran
Anotasikan kelas dengan @Model agar dapat dipersistenkan. Siapkan ModelContainer pada tingkat app. Baca/tulis melalui @Environment(\.modelContext). Ambil data secara reaktif dengan @Query. Saring dengan #Predicate.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “SwiftData @Model dan ModelContext” gratis?
Ya — teks lengkap “SwiftData @Model dan ModelContext” 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 “SwiftData @Model dan ModelContext”?
Mendefinisikan model dengan macro @Model dan menjalankan CRUD melalui ModelContext. 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 2 dari 4.
Berapa lama pelajaran “SwiftData @Model dan ModelContext” 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
- Stack Core Data: Menyiapkan NSPersistentContainer
- SwiftData @Model dan ModelContext
- Relasi dan Fetch Descriptor
- Migrasi Ringan dan Sinkronisasi CloudKit