SwiftData @Model dan ModelContext
Takrifkan model dengan makro @Model dan lakukan operasi CRUD melalui ModelContext.
SwiftData @Model dan ModelContext ialah pelajaran Swift Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Swift Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
Pengenalan SwiftData
SwiftData (iOS 17+) ialah rangka kerja penyimpanan moden dan natif Swift Apple yang dibina berasaskan Core Data.
import SwiftData
// Main concepts: @Model, ModelContainer, ModelContextMakro @Model
Anotasikan kelas dengan @Model untuk menjadikannya model SwiftData yang boleh disimpan. Sifat-sifatnya menjadi atribut tersimpan secara automatik.
@Model
class Item {
var name: String
var createdAt: Date
init(name: String) {
self.name = name
self.createdAt = Date()
}
}Persediaan ModelContainer
Cipta ModelContainer dengan jenis model anda dan suntikkannya ke dalam persekitaran SwiftUI.
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: Item.self)
}
}ModelContext dalam Paparan
Gunakan @Environment(\.modelContext) untuk mengakses konteks model dalam paparan SwiftUI.
struct AddItemView: View {
@Environment(\.modelContext) private var context
func addItem() {
context.insert(Item(name: "New Item"))
}
}Menyisip dan Memadam
Panggil context.insert untuk menambah dan context.delete untuk membuang model. Perubahan disimpan secara automatik secara lalai.
let item = Item(name: "Coffee")
context.insert(item) // add
context.delete(item) // remove
// Auto-saved on next run loop@Query untuk Mendapatkan Data
@Query dalam paparan SwiftUI mendapatkan dan mengemas kini data secara automatik apabila data asas berubah.
struct ItemList: View {
@Query(sort: \Item.createdAt, order: .reverse) var items: [Item]
var body: some View {
List(items) { item in Text(item.name) }
}
}Menapis dengan Predikat
Hantar #Predicate kepada @Query untuk menapis hasil secara deklaratif.
@Query(filter: #Predicate<Item> { $0.name.contains("Swift") })
var swiftItems: [Item]Penyimpanan Manual
Panggil try context.save() apabila anda memerlukan kawalan jelas terhadap masa perubahan disimpan.
do {
try context.save()
} catch {
print("Save error: \(error)")
}@Attribute untuk Penyesuaian
Gunakan @Attribute pada sifat untuk menyesuaikan tingkah laku penyimpanan (contohnya, unik atau storan luaran).
@Model
class User {
@Attribute(.unique) var email: String
@Attribute(.externalStorage) var avatar: Data?
init(email: String) { self.email = email }
}Sifat @Transient
Tandakan sifat dengan @Transient untuk mengecualikannya daripada penyimpanan.
@Model
class Session {
var token: String
@Transient var isExpired: Bool = false
init(token: String) { self.token = token }
}Konfigurasi ModelContainer
Konfigurasikan bekas dengan skema eksplisit dan pelan 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)Semakan Ringkas
Pembungkus sifat SwiftUI manakah yang mendapatkan model SwiftData secara automatik dan mengemas kini paparan apabila data berubah?
Ringkasan Pelajaran
Anotasikan kelas dengan @Model untuk menjadikannya boleh disimpan. Sediakan ModelContainer pada peringkat aplikasi. Baca/tulis melalui @Environment(\.modelContext). Dapatkan data secara reaktif dengan @Query. Tapis dengan #Predicate.
Pelajari Swift dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Soalan Lazim
Adakah pelajaran “SwiftData @Model dan ModelContext” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “SwiftData @Model dan ModelContext”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “SwiftData @Model dan ModelContext”?
Takrifkan model dengan makro @Model dan lakukan operasi CRUD melalui ModelContext. Anda berlatih Swift Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Swift Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Swift Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “SwiftData @Model dan ModelContext” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Tindanan Core Data: Persediaan NSPersistentContainer
- SwiftData @Model dan ModelContext
- Hubungan dan Fetch Descriptors
- Migrasi Ringan dan Penyegerakan CloudKit