swiftdatalisted
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