Community연구 & 데이터 분석github.com

Obgeor2696/SwiftData-Agent-Skill

AI 코딩 어시스턴트가 정확한 SwiftData 코드를 생성하고, 모델, 쿼리, 조건자, 마이그레이션 및 iCloud 동기화를 효과적으로 처리할 수 있도록 향상시킵니다.

SwiftData-Agent-Skill란 무엇인가요?

이 스킬은 AI 코딩 어시스턴트(예: Claude Code, Cursor, Codex)가 SwiftData 프레임워크를 사용하여 정확하고 모범 사례에 부합하는 코드를 생성할 수 있도록 설계되었습니다. SwiftData는 Apple의 최신 데이터 지속성 프레임워크로, Core Data를 대체하며 Swift의 최신 기능을 활용합니다. 이 스킬은 모델 정의, @Query와 FetchDescriptor를 사용한 쿼리 작성, NSPredicate를 대체하는 Swift 조건자, 데이터 마이그레이션 전략, 그리고 iCloud 동기화 설정 등 SwiftData 개발의 주요 영역을 다룹니다. 개발자는 이 스킬을 통해 SwiftData 앱의 생산성을 크게 향상시키고, 일반적인 함정을 피하며, 최신 SwiftUI 통합 패턴을 적용할 수 있습니다. 또한, 이 스킬은 스키마 버전 관리, 컨테이너 설정, 그리고 다중 플랫폼(iOS, macOS, tvOS, watchOS) 지원 가이드를 제공합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add Obgeor2696/SwiftData-Agent-Skill

Installed? Explore more 연구 & 데이터 분석 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

SwiftData-Agent-Skill은(는) 무엇을 하나요?

AI 코딩 어시스턴트가 정확한 SwiftData 코드를 생성하고, 모델, 쿼리, 조건자, 마이그레이션 및 iCloud 동기화를 효과적으로 처리할 수 있도록 향상시킵니다.

개요

SwiftData는 Swift의 새로운 기능을 활용하여 데이터 지속성을 단순화하는 Apple의 최신 프레임워크입니다. 이 스킬은 AI 어시스턴트가 SwiftData 관련 작업에서 일관되고 정확한 코드를 생성하도록 안내합니다.

주요 기능

  • 모델 정의: @Model 매크로를 사용한 데이터 모델 생성 방법
  • 쿼리 작성: @Query 속성 래퍼와 FetchDescriptor를 이용한 데이터 검색
  • 조건자 사용: Swift 조건자(Predicate)를 사용한 필터링
  • 마이그레이션: 스키마 변경 시 데이터 마이그레이션 전략
  • iCloud 동기화: iCloud를 통한 다중 기기 데이터 동기화 설정

지원 플랫폼

  • iOS 17+
  • macOS 14+
  • tvOS 17+
  • watchOS 10+
  • visionOS 1.0+

사용법

모델 정의

import SwiftData
import Foundation

@Model
final class Task {
    var title: String
    var isCompleted: Bool
    var dueDate: Date
    var notes: String?
    var priority: Priority = .medium
    
    init(title: String, isCompleted: Bool = false, dueDate: Date = Date(), notes: String? = nil, priority: Priority = .medium) {
        self.title = title
        self.isCompleted = isCompleted
        self.dueDate = dueDate
        self.notes = notes
        self.priority = priority
    }
}

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

쿼리 예시

import SwiftUI
import SwiftData

struct TaskListView: View {
    @Query(filter: #Predicate<Task> { $0.isCompleted == false },
           sort: \.dueDate) private var tasks: [Task]
    
    var body: some View {
        List(tasks) { task in
            HStack {
                Text(task.title)
                Spacer()
                Text(task.dueDate, style: .date)
            }
        }
    }
}

FetchDescriptor 사용

func fetchHighPriorityTasks() -> [Task] {
    let descriptor = FetchDescriptor<Task>(
        predicate: #Predicate { $0.priority == .high },
        sortBy: [SortDescriptor(\.dueDate, order: .forward)]
    )
    return try? modelContext.fetch(descriptor) ?? []
}

마이그레이션

스키마 변경 시 다음 단계를 따르세요:

  1. 새 모델 버전 정의
  2. 마이그레이션 계획 생성
  3. 컨테이너 설정에서 마이그레이션 활성화
let container = try ModelContainer(for: Task.self, migrationPlan: TaskMigrationPlan.self)

iCloud 동기화

let config = ModelConfiguration(cloudKitContainerIdentifier: "iCloud.com.your.app")
let container = try ModelContainer(for: Task.self, configurations: config)

기여

개선 사항이나 수정 사항이 있으면 Pull Request를 열어 주세요.

관련 스킬