Section 18/181 menit

18. Ringkasan & Decision Guide

18. Ringkasan & Decision Guide

Kapan Gunakan Fitur Apa

Situasi Fitur
Model punya ID dari server, data bisa duplikat saat sync @Attribute(.unique)
Property berisi Data besar (foto, PDF) @Attribute(.externalStorage)
User perlu cari data via Spotlight @Attribute(.spotlight)
Filter sering dilakukan pada property tertentu @Attribute(.index)
Property dalam-memory, tidak perlu disimpan @Attribute(.ephemeral)
Rename property dari versi sebelumnya @Attribute(originalName:)
Hapus parent harus hapus semua children @Relationship(deleteRule: .cascade)
Hapus parent tidak boleh jika masih ada children @Relationship(deleteRule: .deny)
Import data besar dari server @ModelActor + batch insert
Data berubah di extension/background process History tracking
Query kompleks lintas relasi #Predicate traversal + relationshipKeyPathsForPrefetching
Data model berubah antar versi VersionedSchema + SchemaMigrationPlan
Sync data ke iCloud ModelConfiguration(cloudKitDatabase: .automatic)
Unit testing persistence logic In-memory ModelContainer

Checklist Sebelum Shipping

swift
□ Semua perubahan schema menggunakan VersionedSchema (bukan langsung rename)
□ Model yang di-sync via CloudKit: semua property optional atau ada default
□ Operasi batch (>50 records) menggunakan @ModelActor, bukan main context
□ Property yang sering di-filter sudah punya @Attribute(.index)
□ Data besar (>100KB) menggunakan @Attribute(.externalStorage)
□ Test coverage: in-memory container untuk semua repository tests
□ Tidak ada model instance yang di-pass antar thread (gunakan PersistentIdentifier)
□ FetchDescriptor dengan limit pada semua query yang tidak butuh semua data
□ Relationship yang sering di-akses di-prefetch (relationshipKeyPathsForPrefetching)
□ CloudKit: test di device fisik dengan iCloud account aktif sebelum release

SwiftData di level lanjutan adalah tentang kontrol yang tepat di tempat yang tepat: biarkan framework bekerja otomatis (upsert, sync, lazy loading) di tempat yang bisa dipercaya, dan ambil kontrol manual (custom migration, batch actor, conflict resolution) hanya di tempat yang memang butuh perhatian ekstra.