What problem does it solve?
Managing structured local data, reactive queries, schema evolution, and safe background operations in modern iOS apps can be error-prone and time consuming. This guidance centralizes best practices for defining persistent models, configuring storage containers, writing predicates and fetch descriptors, performing migrations, and integrating with SwiftUI and CloudKit so data remains consistent and safe across actors and processes.
Core Features & Use Cases
- Model definition and relationships guidance including attribute options, external storage, transient properties, and uniqueness patterns for reliable persistence.
- Container and configuration patterns covering in-memory previews, named configurations, CloudKit sync, app group storage, and coexistence with existing Core Data stores.
- Querying and data access patterns: @Query usage in SwiftUI, FetchDescriptor and SortDescriptor options, complex #Predicate constructs, batched enumeration, and performance best practices.
- Concurrency and migrations: using @ModelActor for background work, passing PersistentIdentifier across boundaries, VersionedSchema and SchemaMigrationPlan examples for lightweight and custom migration stages.
- Real-world scenarios include migrating a Core Data store to SwiftData, implementing CloudKit sync-safe models, or building efficient background import pipelines.
Quick Start
Define your @Model classes, create a ModelContainer with a suitable ModelConfiguration, run a SchemaMigrationPlan if needed, and validate queries and background handlers using @ModelActor.