Core Data Yığını: NSPersistentContainer Kurulumu
Bir SwiftUI uygulamasında kalıcı kapsayıcıyı, bağlamı ve koordinatörü kurun.
Core Data Yığını: NSPersistentContainer Kurulumu, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
Core Data'ya Genel Bakış
Core Data, Apple'ın nesne grafiği ve kalıcı depolama çatısıdır. SQLite'ı veya diğer depoları nesne yönelimli bir API ile yönetir.
import CoreData
// Key classes: NSPersistentContainer, NSManagedObjectContext
// NSManagedObject, NSFetchRequestNSPersistentContainer Oluşturma
NSPersistentContainer nesnesini .xcdatamodeld model adınızla başlatın ve kalıcı depoları yükleyin.
let container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { desc, error in
if let error { fatalError("Core Data failed: \(error)") }
}Kalıcı Depolama Denetleyicisi Örüntüsü
Uygulamanın her yerinden temiz erişim sağlamak için kapsayıcıyı tekil bir nesneye veya enjekte edilebilir bir PersistenceController yapısına sarın.
struct PersistenceController {
static let shared = PersistenceController()
let container: NSPersistentContainer
init() {
container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { _, error in
if let error { fatalError("\(error)") }
}
}
}viewContext ve backgroundContext
viewContext, kullanıcı arayüzü için ana iş parçacığında kullanılan bağlamdır. Yoğun işlemler için newBackgroundContext() kullanın.
let viewCtx = PersistenceController.shared.container.viewContext
let bgCtx = PersistenceController.shared.container.newBackgroundContext()Yönetilen Nesneler Oluşturma
Yeni nesneleri NSEntityDescription.insertNewObject veya oluşturulan sınıf başlatıcısını kullanarak ekleyin.
let item = Item(context: viewCtx)
item.timestamp = Date()
try? viewCtx.save()Nesneleri Getirme
Core Data nesnelerini koşullarla ve sıralama tanımlayıcılarıyla sorgulamak için NSFetchRequest kullanın.
let request: NSFetchRequest<Item> = Item.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: false)]
let items = try? viewCtx.fetch(request)Bağlamı Kaydetme
Değişiklikleri kalıcı hâle getirmek için her zaman context.save() çağrısını yapın. Üretim kodunda bunu do-catch içine alın.
do {
try viewCtx.save()
} catch {
print("Save failed: \(error)")
viewCtx.rollback()
}@FetchRequest ile SwiftUI Entegrasyonu
Core Data değiştiğinde kullanıcı arayüzünü otomatik olarak güncellemek için SwiftUI görünümlerinde @FetchRequest kullanın.
struct ItemList: View {
@FetchRequest(
sortDescriptors: [SortDescriptor(\Item.timestamp, order: .reverse)]
) var items: FetchedResults<Item>
var body: some View {
List(items) { Text($0.timestamp!.formatted()) }
}
}viewContext'i SwiftUI'ya Enjekte Etme
Görünümlerin Core Data'yı okuyup yazabilmesi için viewContext değerini SwiftUI ortamı üzerinden aktarın.
@main
struct MyApp: App {
let persistence = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistence.container.viewContext)
}
}
}Nesneleri Silme
Bir nesneyi kalıcı olarak kaldırmak için context.delete(object) çağrısını yapın ve ardından kaydedin.
viewCtx.delete(item)
try? viewCtx.save()Sınama için Bellek İçi Depo
Birim sınamaları sırasında diske erişmekten kaçınmak için bellek içi bir depo kullanın.
let desc = NSPersistentStoreDescription()
desc.type = NSInMemoryStoreType
container.persistentStoreDescriptions = [desc]
container.loadPersistentStores { _, _ in }Hızlı Kontrol
Kullanıcı arayüzü odaklı Core Data okuma ve yazma işlemleri için hangi NSPersistentContainer bağlamı kullanılmalıdır?
Ders Özeti
Core Data'yı NSPersistentContainer ile kurun, depoları yükleyin ve bunu bir PersistenceController içine sarın. Ana iş parçacığında viewContext, yoğun işler için newBackgroundContext() kullanın. SwiftUI ile @FetchRequest ve yönetilen nesne bağlamı ortam anahtarı üzerinden bütünleştirin.
Sıkça Sorulan Sorular
“Core Data Yığını: NSPersistentContainer Kurulumu” dersi ücretsiz mi?
Evet — “Core Data Yığını: NSPersistentContainer Kurulumu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Core Data Yığını: NSPersistentContainer Kurulumu” dersinde ne öğreneceğim?
Bir SwiftUI uygulamasında kalıcı kapsayıcıyı, bağlamı ve koordinatörü kurun. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Core Data Yığını: NSPersistentContainer Kurulumu” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Core Data Yığını: NSPersistentContainer Kurulumu
- SwiftData @Model ve ModelContext
- İlişkiler ve Fetch Descriptor'ları
- Hafif Geçişler ve CloudKit Eşitlemesi