Stack Core Data: Menyiapkan NSPersistentContainer
Menyiapkan container persisten, konteks, dan coordinator dalam aplikasi SwiftUI.
Stack Core Data: Menyiapkan NSPersistentContainer adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Gambaran Umum Core Data
Core Data adalah kerangka kerja graf objek dan persistensi milik Apple. Kerangka ini mengelola SQLite (atau penyimpanan lainnya) melalui API berorientasi objek.
import CoreData
// Key classes: NSPersistentContainer, NSManagedObjectContext
// NSManagedObject, NSFetchRequestMembuat NSPersistentContainer
Inisialisasi NSPersistentContainer dengan nama model .xcdatamodeld Anda dan muat penyimpanan persisten.
let container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { desc, error in
if let error { fatalError("Core Data failed: \(error)") }
}Pola Pengontrol Persistensi
Bungkus container dalam struct PersistenceController singleton (atau yang dapat disuntikkan) agar dapat diakses dengan rapi di seluruh app.
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 adalah konteks untuk thread utama dan UI. Gunakan newBackgroundContext() untuk operasi berat.
let viewCtx = PersistenceController.shared.container.viewContext
let bgCtx = PersistenceController.shared.container.newBackgroundContext()Membuat Objek Terkelola
Sisipkan objek baru menggunakan NSEntityDescription.insertNewObject atau penginisialisasi kelas yang dibuat secara otomatis.
let item = Item(context: viewCtx)
item.timestamp = Date()
try? viewCtx.save()Mengambil Objek
Gunakan NSFetchRequest untuk meminta objek Core Data dengan predikat dan deskriptor pengurutan.
let request: NSFetchRequest<Item> = Item.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: false)]
let items = try? viewCtx.fetch(request)Menyimpan Konteks
Selalu panggil context.save() untuk mempertahankan perubahan. Bungkus dalam do-catch untuk kode produksi.
do {
try viewCtx.save()
} catch {
print("Save failed: \(error)")
viewCtx.rollback()
}Integrasi SwiftUI dengan @FetchRequest
Gunakan @FetchRequest dalam tampilan SwiftUI agar UI diperbarui secara otomatis saat 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()) }
}
}Menyuntikkan viewContext ke SwiftUI
Teruskan viewContext melalui lingkungan SwiftUI agar tampilan dapat membaca dan menulis Core Data.
@main
struct MyApp: App {
let persistence = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistence.container.viewContext)
}
}
}Menghapus Objek
Panggil context.delete(object), lalu simpan untuk menghapus objek secara permanen.
viewCtx.delete(item)
try? viewCtx.save()Penyimpanan Dalam Memori untuk Pengujian
Gunakan penyimpanan dalam memori agar disk tidak tersentuh selama pengujian unit.
let desc = NSPersistentStoreDescription()
desc.type = NSInMemoryStoreType
container.persistentStoreDescriptions = [desc]
container.loadPersistentStores { _, _ in }Pemeriksaan Cepat
Konteks NSPersistentContainer mana yang harus digunakan untuk pembacaan dan penulisan Core Data yang digerakkan oleh UI?
Ringkasan Pelajaran
Siapkan Core Data dengan NSPersistentContainer, muat penyimpanan, lalu bungkus dalam PersistenceController. Gunakan viewContext pada thread utama dan newBackgroundContext() untuk pekerjaan berat. Integrasikan dengan SwiftUI melalui @FetchRequest dan kunci lingkungan konteks objek terkelola.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Stack Core Data: Menyiapkan NSPersistentContainer” gratis?
Ya — teks lengkap “Stack Core Data: Menyiapkan NSPersistentContainer” 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 “Stack Core Data: Menyiapkan NSPersistentContainer”?
Menyiapkan container persisten, konteks, dan coordinator dalam aplikasi SwiftUI. 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 1 dari 4.
Berapa lama pelajaran “Stack Core Data: Menyiapkan NSPersistentContainer” 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