Swift Academy · Ders

Hafif Geçişler ve CloudKit Eşitlemesi

Şema değişikliklerini geçirin ve NSPersistentCloudKitContainer ile CloudKit eşitlemesini etkinleştirin.

4. ders / 414 adım

Hafif Geçişler ve CloudKit Eşitlemesi, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. 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.

Geçişler Neden Gerekli?

Core Data veya SwiftData modelinizi değiştirdiğinizde (öznitelik ekleme, yeniden adlandırma ya da kaldırma), mevcut depoları geçirmeniz gerekir.

// Without migration, app crashes on launch:
// "The model used to open the store is incompatible with the one used to create the store"

Core Data'da Hafif Geçiş

Core Data, eşleme modeli olmadan basit geçişleri (öznitelik ekleme, yeniden adlandırma, kaldırma) otomatik olarak çıkarabilir.

let desc = NSPersistentStoreDescription(url: storeURL)
desc.shouldMigrateStoreAutomatically = true
desc.shouldInferMappingModelAutomatically = true
container.persistentStoreDescriptions = [desc]

.xcdatamodeld'de Sürüm Geçmişi

Xcode'da yeni bir model sürümü oluşturun: Editor → Model Sürümü Ekle. Geçerli sürümü yeni sürüm olarak ayarlayın.

// In MyModel.xcdatamodeld:
// ├── MyModel.xcdatamodel  (v1 - old)
// └── MyModel 2.xcdatamodel (v2 - current)
// Set current version to v2 in File Inspector

SwiftData Şema Sürümleme

SwiftData model sürümlerini yönetmek için VersionedSchema ve SchemaMigrationPlan kullanın.

enum AppSchemaV1: VersionedSchema {
  static var versionIdentifier = Schema.Version(1,0,0)
  static var models: [any PersistentModel.Type] { [ItemV1.self] }
  @Model final class ItemV1 { var name: String; init(name: String) { self.name = name } }
}

SchemaMigrationPlan

SwiftData'yı yükseltmeler boyunca yönlendirmek için sürümler arasındaki geçiş aşamalarını bir SchemaMigrationPlan içinde tanımlayın.

enum AppMigrationPlan: SchemaMigrationPlan {
  static var schemas: [any VersionedSchema.Type] { [AppSchemaV1.self, AppSchemaV2.self] }
  static var stages: [MigrationStage] { [migrateV1toV2] }
  static let migrateV1toV2 = MigrationStage.lightweight(fromVersion: AppSchemaV1.self, toVersion: AppSchemaV2.self)
}

Özel Geçiş Aşaması

Karmaşık geçişler (veri dönüştürmeleri) için .custom aşamasını willMigrate ve didMigrate kapanışlarıyla kullanın.

static let migrateV1toV2 = MigrationStage.custom(
  fromVersion: AppSchemaV1.self,
  toVersion: AppSchemaV2.self,
  willMigrate: { context in
    // transform old data
  },
  didMigrate: nil
)

NSPersistentCloudKitContainer

CloudKit eşzamanlamasını etkinleştirmek için NSPersistentContainer yerine NSPersistentCloudKitContainer kullanın.

let container = NSPersistentCloudKitContainer(name: "MyModel")
container.loadPersistentStores { _, error in
  if let error { fatalError("\(error)") }
}
container.viewContext.automaticallyMergesChangesFromParent = true

CloudKit Gereksinimleri

CloudKit eşzamanlaması şunları gerektirir: giriş yapılmış bir iCloud hesabı, CloudKit yetkisi ve geliştirici portalında yapılandırılmış bir CloudKit kapsayıcısı.

// Xcode: Signing & Capabilities → + → iCloud → CloudKit
// Enable "Use CloudKit" in Core Data model inspector

CloudKit ile SwiftData

SwiftData'da CloudKit eşzamanlamasını etkinleştirmek için cloudKitDatabase içeren bir ModelConfiguration aktarın.

let config = ModelConfiguration(
  schema: schema,
  cloudKitDatabase: .automatic
)
let container = try ModelContainer(for: schema, configurations: config)

Eşzamanlama Çakışmalarını Ele Alma

Core Data CloudKit, çakışmaları son yazanın kazandığı ilkesiyle çözer. Eşzamanlı yazma çekişmesini en aza indirecek modeller tasarlayın.

// Best practice: keep models granular
// One attribute per write concern
// Avoid large blobs that frequently change

Geçişleri Sınama

Kullanıcılar etkilenmeden önce sorunları yakalamak için geçişleri yayımlamadan önce üretim deposunun bir kopyası üzerinde sınayın.

// Copy production store to a temp location
// Load it with the new container and verify objects are intact

Geçişleri İzleme

Uzun süren geçişler sırasında ilerleme kullanıcı arayüzünü göstermek için Core Data geçiş bildirimlerini dinleyin.

NotificationCenter.default.addObserver(
  forName: .NSPersistentStoreCoordinatorStoresWillChange,
  object: container.persistentStoreCoordinator,
  queue: .main
) { _ in showMigrationProgress() }

Hızlı Kontrol

Otomatik CloudKit eşzamanlamasını hangi NSPersistentContainer alt sınıfı etkinleştirir?

Ders Özeti

Basit değişiklikler için shouldMigrateStoreAutomatically ile hafif geçişi etkinleştirin. SwiftData için VersionedSchema + SchemaMigrationPlan kullanın. NSPersistentCloudKitContainer sınıfına geçerek veya ModelConfiguration(cloudKitDatabase: .automatic) kullanarak CloudKit eşzamanlamasını etkinleştirin.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Swift öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
122
Dersler
409

Sıkça Sorulan Sorular

“Hafif Geçişler ve CloudKit Eşitlemesi” dersi ücretsiz mi?

Evet — “Hafif Geçişler ve CloudKit Eşitlemesi” 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.

“Hafif Geçişler ve CloudKit Eşitlemesi” dersinde ne öğreneceğim?

Şema değişikliklerini geçirin ve NSPersistentCloudKitContainer ile CloudKit eşitlemesini etkinleştirin. 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 4. dersidir.

“Hafif Geçişler ve CloudKit Eşitlemesi” 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

  1. Core Data Yığını: NSPersistentContainer Kurulumu
  2. SwiftData @Model ve ModelContext
  3. İlişkiler ve Fetch Descriptor'ları
  4. Hafif Geçişler ve CloudKit Eşitlemesi
← Swift Academy Sayfasına Dön