0Pricing
Swift Academy · Pelajaran

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, ModelContext

Makro @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

  1. Stack Core Data: Menyiapkan NSPersistentContainer
  2. SwiftData @Model dan ModelContext
  3. Relasi dan Fetch Descriptor
  4. Migrasi Ringan dan Sinkronisasi CloudKit
← Kembali ke Swift Academy