Was macht SwiftData-Agent-Skill?
Verbessert KI-Codierungsassistenten, um präzisen SwiftData-Code zu generieren, der Modelle, Abfragen, Prädikate, Migrationen und iCloud-Synchronisation effektiv handhabt.
Überblick
Dieses Skill vermittelt KI-Agenten die Best Practices und Syntax für SwiftData, Apples modernes Persistenz-Framework, das auf Core Data aufbaut. Es stellt sicher, dass generierter Code die neuesten APIs und Konventionen verwendet.
Verwendung
Binde dieses Skill in deine Agent-Konfiguration ein (z. B. .cursorrules für Cursor oder die Skill-Definitionsdatei für Claude Code). Danach kann der Agent SwiftData-Code mit folgenden Schritten generieren:
- Modelle definieren: Mit
@Model,@Attribute,@Relationshipund eindeutigen Indizes. - Abfragen erstellen: Mit
@QueryoderFetchDescriptorundPredicate. - Migrationen handhaben: Mit
SchemaMigrationPlanundVersionedSchema. - iCloud Sync konfigurieren: Mit
CloudKitContainerinModelConfiguration.
Unterstützte Plattformen
| Plattform | SwiftData-Unterstützung |
|---|---|
| iOS 17+ | Vollständig |
| macOS 14+ | Vollständig |
| watchOS 10+ | Vollständig |
| visionOS 1+ | Vollständig |
| tvOS 17+ | Eingeschränkt |
Beispiel: Ein einfaches Modell
import SwiftData
import Foundation
@Model
final class Task {
var title: String
var isCompleted: Bool
var createdAt: Date
init(title: String, isCompleted: Bool = false) {
self.title = title
self.isCompleted = isCompleted
self.createdAt = Date()
}
}
Abfragen mit Prädikaten
let predicate = #Predicate<Task> { task in
task.isCompleted == false && task.title.contains("dringend")
}
let descriptor = FetchDescriptor<Task>(predicate: predicate)
let tasks = try? modelContext.fetch(descriptor)
Migrationen
Definiere ein SchemaMigrationPlan, um Änderungen zwischen Modellversionen zu handhaben:
enum TaskMigrationPlan: SchemaMigrationPlan {
static var schemas: [VersionedSchema.Type] = [
TaskSchemaV1.self,
TaskSchemaV2.self
]
static var stages: [MigrationStage] = [
.lightweight(from: TaskSchemaV1.self, to: TaskSchemaV2.self)
]
}
iCloud Sync
Aktiviere iCloud Synchronisation in der ModelConfiguration:
let config = ModelConfiguration(cloudKitDatabase: .private("iCloud.your.bundle.id"))
let container = try ModelContainer(for: Task.self, configurations: config)
Lizenz
Siehe LICENSE für Details.