Section 18/182 menit
18. Ringkasan & Decision Guide
18. Ringkasan & Decision Guide
Flowchart Keputusan
swift
Apakah app perlu persistensi data lokal?
│
▼
Ya
│
Apakah target minimum iOS 17+?
│
Tidak ──→ Gunakan Core Data (atau GRDB untuk SQL penuh)
│
Ya
│
Apakah butuh raw SQL / custom store / query sangat kompleks?
│
Ya ──→ Gunakan GRDB atau SQLite.swift
│
Tidak
│
Apakah app berbasis SwiftUI?
│
Ya ──→ SwiftData + @Query + @Bindable (pilihan terbaik)
│
Tidak (UIKit)
│
Ya ──→ SwiftData + ModelContext manual + UITableView/Collection
Decision Table
| Kondisi | Rekomendasi |
|---|---|
| Project baru, iOS 17+, SwiftUI | SwiftData — pilihan default |
| Project baru, iOS 17+, UIKit | SwiftData — setup sedikit lebih manual tapi layak |
| Project existing dengan Core Data | Tetap Core Data, atau migrasi bertahap ke SwiftData |
| Butuh support iOS 16 ke bawah | Core Data |
| Butuh query SQL kompleks / JOIN | GRDB atau SQLite.swift |
| Data hanya di memori (tidak perlu ke disk) | @Observable / @State biasa |
| CloudKit sync tanpa kompleksitas | SwiftData + cloudKitDatabase: .automatic |
| Background import data besar | SwiftData + @ModelActor |
| Perlu Spotlight integration | SwiftData + @Attribute(.spotlight) |
Poin Kunci
SwiftData adalah evolusi alami dari Core Data untuk era Swift modern. Dengan @Model macro, #Predicate type-safe, @Query reaktif, dan @ModelActor untuk concurrency, developer mendapat semua kekuatan Core Data tanpa boilerplate-nya.
Mulai dengan SwiftData di project baru yang targeting iOS 17+. Untuk migration dari Core Data yang sudah ada, SwiftData dapat berjalan side-by-side dengan Core Data sehingga migrasi bisa dilakukan bertahap modul per modul.
Langkah selanjutnya untuk dipelajari:
- SwiftData History API (iOS 18) untuk tracking perubahan dan undo/redo
- Interop SwiftData ↔ Core Data untuk project migration
- SwiftData dengan Swift Testing untuk test suite yang reliable
- CloudKit Console untuk debug sync behavior