Tindanan Core Data: Persediaan NSPersistentContainer
Sediakan bekas berterusan, konteks dan penyelaras dalam aplikasi SwiftUI.
Tindanan Core Data: Persediaan NSPersistentContainer ialah pelajaran Swift Academy percuma di CoddyKit. Ini ialah pelajaran 1 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.
Gambaran Keseluruhan Core Data
Core Data ialah rangka kerja graf objek dan penyimpanan berterusan Apple. Ia mengurus SQLite (atau stor lain) melalui API berorientasikan objek.
import CoreData
// Key classes: NSPersistentContainer, NSManagedObjectContext
// NSManagedObject, NSFetchRequestMencipta NSPersistentContainer
Mulakan NSPersistentContainer dengan nama model .xcdatamodeld anda dan muatkan stor berterusan.
let container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { desc, error in
if let error { fatalError("Core Data failed: \(error)") }
}Corak Pengawal Penyimpanan Berterusan
Bungkus bekas itu dalam struktur PersistenceController singleton (atau yang boleh disuntik) untuk akses yang kemas di seluruh aplikasi.
struct PersistenceController {
static let shared = PersistenceController()
let container: NSPersistentContainer
init() {
container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { _, error in
if let error { fatalError("\(error)") }
}
}
}viewContext dan backgroundContext
viewContext ialah konteks untuk UI pada bebenang utama. Gunakan newBackgroundContext() untuk operasi berat.
let viewCtx = PersistenceController.shared.container.viewContext
let bgCtx = PersistenceController.shared.container.newBackgroundContext()Mencipta Objek Terurus
Sisipkan objek baharu menggunakan NSEntityDescription.insertNewObject atau pemula kelas yang dijana.
let item = Item(context: viewCtx)
item.timestamp = Date()
try? viewCtx.save()Mendapatkan Objek
Gunakan NSFetchRequest untuk membuat pertanyaan terhadap objek Core Data dengan predikat dan deskriptor pengisihan.
let request: NSFetchRequest<Item> = Item.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: false)]
let items = try? viewCtx.fetch(request)Menyimpan Konteks
Sentiasa panggil context.save() untuk mengekalkan perubahan. Bungkusnya dalam blok do-catch untuk kod produksi.
do {
try viewCtx.save()
} catch {
print("Save failed: \(error)")
viewCtx.rollback()
}Integrasi SwiftUI dengan @FetchRequest
Gunakan @FetchRequest dalam paparan SwiftUI supaya UI dikemas kini secara automatik apabila Core Data berubah.
struct ItemList: View {
@FetchRequest(
sortDescriptors: [SortDescriptor(\Item.timestamp, order: .reverse)]
) var items: FetchedResults<Item>
var body: some View {
List(items) { Text($0.timestamp!.formatted()) }
}
}Menyuntik viewContext ke dalam SwiftUI
Hantar viewContext melalui persekitaran SwiftUI supaya paparan boleh membaca dan menulis Core Data.
@main
struct MyApp: App {
let persistence = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistence.container.viewContext)
}
}
}Memadam Objek
Panggil context.delete(object), kemudian simpan untuk membuang objek secara kekal.
viewCtx.delete(item)
try? viewCtx.save()Stor Dalam Memori untuk Pengujian
Gunakan stor dalam memori supaya cakera tidak disentuh semasa ujian unit.
let desc = NSPersistentStoreDescription()
desc.type = NSInMemoryStoreType
container.persistentStoreDescriptions = [desc]
container.loadPersistentStores { _, _ in }Semakan Ringkas
Konteks NSPersistentContainer manakah yang patut digunakan untuk pembacaan dan penulisan Core Data yang dipacu oleh UI?
Ringkasan Pelajaran
Sediakan Core Data dengan NSPersistentContainer, muatkan stor, dan bungkusnya dalam PersistenceController. Gunakan viewContext pada bebenang utama dan newBackgroundContext() untuk kerja berat. Integrasikan dengan SwiftUI melalui @FetchRequest dan kunci persekitaran konteks objek terurus.
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 “Tindanan Core Data: Persediaan NSPersistentContainer” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “Tindanan Core Data: Persediaan NSPersistentContainer”, 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 “Tindanan Core Data: Persediaan NSPersistentContainer”?
Sediakan bekas berterusan, konteks dan penyelaras dalam aplikasi SwiftUI. 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 1 daripada 4.
Berapa lamakah pelajaran “Tindanan Core Data: Persediaan NSPersistentContainer” 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