Back to list
fusengine

swiftui-data

by fusengine

Redefining development through cognitive automation and collaborative agent systems.

0🍴 0📅 Jan 24, 2026

SKILL.md


name: swiftui-data description: Implement data persistence with SwiftData, Core Data, CloudKit sync, and local storage. Use when storing app data, creating database models, syncing with iCloud, or managing user preferences with AppStorage. user-invocable: false

SwiftUI Data Persistence

import SwiftData

@Model
final class Task {
    var title: String
    var isCompleted: Bool
    var createdAt: Date
    var priority: Priority

    @Relationship(deleteRule: .cascade)
    var subtasks: [Subtask]?

    init(title: String, priority: Priority = .medium) {
        self.title = title
        self.isCompleted = false
        self.createdAt = .now
        self.priority = priority
    }
}

enum Priority: String, Codable, CaseIterable {
    case low, medium, high
}

// App configuration
@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .modelContainer(for: Task.self)
    }
}

SwiftData Queries

struct TaskListView: View {
    @Query(
        filter: #Predicate<Task> { !$0.isCompleted },
        sort: \Task.createdAt,
        order: .reverse
    )
    private var tasks: [Task]

    @Environment(\.modelContext) private var context

    var body: some View {
        List(tasks) { task in
            TaskRow(task: task)
                .swipeActions {
                    Button("Delete", role: .destructive) {
                        context.delete(task)
                    }
                }
        }
    }

    func addTask(_ title: String) {
        let task = Task(title: title)
        context.insert(task)
    }
}

CloudKit Sync with SwiftData

// Enable in App configuration
@main
struct MyApp: App {
    var container: ModelContainer

    init() {
        let schema = Schema([Task.self, Subtask.self])
        let config = ModelConfiguration(
            schema: schema,
            cloudKitDatabase: .private("iCloud.com.myapp")
        )
        container = try! ModelContainer(
            for: schema,
            configurations: [config]
        )
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .modelContainer(container)
    }
}

AppStorage & SceneStorage

struct SettingsView: View {
    // Persists to UserDefaults
    @AppStorage("username") private var username = ""
    @AppStorage("isDarkMode") private var isDarkMode = false
    @AppStorage("fontSize") private var fontSize = 14.0

    // Persists per-scene (window state)
    @SceneStorage("selectedTab") private var selectedTab = 0

    var body: some View {
        Form {
            TextField("Username", text: $username)
            Toggle("Dark Mode", isOn: $isDarkMode)
            Slider(value: $fontSize, in: 10...24)
        }
    }
}

When to Use What

SolutionUse Case
@AppStorageSimple preferences, settings
@SceneStorageWindow/scene-specific UI state
SwiftDataComplex models, relationships, CloudKit
Core DataiOS < 17, advanced migrations
KeychainSensitive data (tokens, passwords)
FileManagerDocuments, large files, exports

Score

Total Score

60/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon