SwiftData
SwiftData is Apple’s model-persistence framework: @Model classes,
ModelContainer/ModelContext, #Predicate-filtered fetches, and the
@Query/.modelContainer(for:) SwiftUI integration. tswift implements a
stage-1 subset natively over a SQLite-backed host service (tswift.db.*) —
no macro expansion: @Model classes are discovered structurally from the
declaration itself.
Legend: ✅ Implemented · 🟡 Partial · ⬜ Missing · 🚫 Out of scope.
Member counts below are generated by python3 tools/framework-inventory/coverage.py --framework swiftdata --emit-json — nothing on this page is hand-typed.
10 implemented · 2 partial · 102 missing (114 total)
PersistentModel (12)
==funcMissingcreateBackingDatafuncMissinggetTransformableValuefuncMissinggetValuefuncMissinghasChangesvarMissinghashfuncMissingidvarMissingisDeletedvarMissingmodelContextvarMissingpersistentModelIDvarMissingsetTransformableValuefuncMissingsetValuefuncMissing
Schema (15)
==funcMissingdebugDescriptionvarMissingencodefuncMissingencodingVersionletMissingentitiesletMissingentitiesByNameletMissingentityfuncMissingentityNamefuncMissinghashfuncMissinghashValuevarMissinginitinitMissingloadfuncMissingsavefuncMissingschemaEncodingVersionletMissingversionletMissing
SchemaProperty (4)
isAttributevarMissingisOptionalvarMissingisRelationshipvarMissingisTransientvarMissing
PersistentIdentifier (10)
<funcMissing==funcMissingencodefuncMissingentityNamevarMissinghashfuncMissinghashValuevarMissingidletMissingidentifierfuncMissinginitinitMissingstoreIdentifiervarMissing
ModelContainer (8)
==funcMissingconfigurationsvarMissingdeleteAllDatafuncMissingerasefuncMissinginitinitImplementedmainContextvarImplementedmigrationPlanletMissingschemaletMissing
ModelConfiguration (16)
==funcMissingallowsSaveletMissingcloudKitContainerIdentifierletMissingcloudKitDatabaseletMissingdebugDescriptionvarMissinggroupAppContainerIdentifierletMissinggroupContainerletMissinghashfuncMissinghashValuevarMissingidvarMissinginitinitImplementedisStoredInMemoryOnlyletMissingnameletMissingschemavarMissingurlletMissingvalidatefuncMissing
ModelContext (28)
==funcMissingauthorvarMissingautosaveEnabledvarMissingchangedModelsArrayvarMissingcontainervarMissingdebugDescriptionvarMissingdeletefuncImplementeddeleteHistoryfuncMissingdeletedModelsArrayvarMissingdidSaveletMissingeditingStatevarMissingenumeratefuncMissingfetchfuncImplementedfetchCountfuncMissingfetchHistoryfuncMissingfetchIdentifiersfuncMissinghasChangesvarMissinginitinitImplementedinsertfuncImplementedinsertedModelsArrayvarMissingmodelfuncMissingprocessPendingChangesfuncMissingregisteredModelfuncMissingrollbackfuncMissingsavefuncImplementedtransactionfuncMissingundoManagervarMissingwillSaveletMissing
FetchDescriptor (9)
==funcMissingfetchLimitvarMissingfetchOffsetvarMissingincludePendingChangesvarMissinginitinitImplementedpredicatevarMissingpropertiesToFetchvarMissingrelationshipKeyPathsForPrefetchingvarMissingsortByvarMissing
FetchResultsCollection (3)
endIndexvarMissingstartIndexvarMissingsubscriptsubscriptMissing
Query (5)
fetchErrorvarMissinginitinitImplementedmodelContextvarMissingupdatefuncMissingwrappedValuevarPartial
View (2)
modelContainerfuncPartialmodelContextfuncMissing
Scene (2)
modelContainerfuncMissingmodelContextfuncMissing
No members match your filters.
What’s implemented
@Modelclasses — discovered structurally (no macro expansion); stored properties of typeInt/Double/String/Bool(and their optionals) become SQLite table columns.Data/Date-typed properties raise a clear diagnostic rather than being silently dropped.ModelContainer(for:)/ModelConfiguration— opens (or creates) a SQLite-backed store; an in-memory configuration is supported.ModelContext.insert(_:)/.delete(_:)/.save()— change tracking with a single-transaction flush, rolling back on error.#Predicate<T> { … }— a SQL-compiling subset:&&/||/!, comparisons,== nil/!= nilon optional columns, and Stringcontains/hasPrefix/hasSuffix(viaLIKE). Anything wider raises a diagnostic instead of silently mis-filtering.FetchDescriptor/SortDescriptorandModelContext.fetch(_:).@Query/.modelContainer(for:)— SwiftUI integration: the nearest enclosing.modelContainer(for:)publishes itsModelContextto@Queryfor that view’s subtree.
Out of scope (for now)
Per frameworks/swiftdata/scope.toml: relationships (@Relationship,
to-one/to-many model references), schema migration (MigrationStage,
versioned schemas), persistent history tracking, the custom
DataStore backend SPI, CloudKit sync, and undo (undoManager) are
not modelled. ModelContext.autosaveEnabled is off — callers must call
save() explicitly (this runtime has no run loop to hang autosave off).
How it renders
SwiftData runs over the same host-service seam as UserDefaults/FileManager
(see the Foundation status page): a tswift.db.* wire the embedding backs
with a real SQLite connection (CLI native) or a capability-gated diagnostic
where no database service exists (e.g. an embedding that hasn’t wired one up).