← ClaudeAtlas

swiftdatalisted

Implement, review, or improve data persistence using SwiftData. Use when defining @Model classes with @Attribute, @Relationship, @Transient, @Unique, or @Index; when querying with @Query, #Predicate, FetchDescriptor, or SortDescriptor; when configuring ModelContainer and ModelContext for SwiftUI or background work with @ModelActor; when planning schema migrations with VersionedSchema and SchemaMigrationPlan; when setting up CloudKit sync with ModelConfiguration; or when coexisting with or migrating from Core Data.
dpearson2699/swift-ios-skills · ★ 730 · Data & Documents · score 80
Install: claude install-skill dpearson2699/swift-ios-skills
# SwiftData Persist, query, and manage structured data in iOS 26+ apps using SwiftData with Swift 6.3. ## Contents - [Model Definition](#model-definition) - [ModelContainer Setup](#modelcontainer-setup) - [CRUD Operations](#crud-operations) - [@Query in SwiftUI](#query-in-swiftui) - [#Predicate](#predicate) - [FetchDescriptor](#fetchdescriptor) - [Schema Versioning and Migration](#schema-versioning-and-migration) - [Concurrency (@ModelActor)](#concurrency-modelactor) - [SwiftUI Integration](#swiftui-integration) - [Common Mistakes](#common-mistakes) - [Review Checklist](#review-checklist) - [References](#references) ## Model Definition Apply `@Model` to a **class** (not struct). Generates `PersistentModel`, `Observable`, `Sendable`. ```swift @Model class Trip { var name: String var destination: String var startDate: Date var endDate: Date var isFavorite: Bool = false @Attribute(.externalStorage) var imageData: Data? @Relationship(deleteRule: .cascade, inverse: \LivingAccommodation.trip) var accommodation: LivingAccommodation? @Transient var isSelected: Bool = false // Always provide default init(name: String, destination: String, startDate: Date, endDate: Date) { self.name = name; self.destination = destination self.startDate = startDate; self.endDate = endDate } } ``` **@Attribute options**: `.externalStorage`, `.unique`, `.spotlight`, `.allowsCloudEncryption`, `.preserveValueOnDeletion` (iOS 18+), `.epheme