Swift Academy · Pelajaran

Tindanan Core Data: Persediaan NSPersistentContainer

Sediakan bekas berterusan, konteks dan penyelaras dalam aplikasi SwiftUI.

Pelajaran 1 daripada 413 langkah

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

Mencipta 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.

Percuma untuk bermula

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

  1. Tindanan Core Data: Persediaan NSPersistentContainer
  2. SwiftData @Model dan ModelContext
  3. Hubungan dan Fetch Descriptors
  4. Migrasi Ringan dan Penyegerakan CloudKit
← Kembali ke Swift Academy