Swift UI는 Swift Data를 시작하는 가장 쉬운 방법입니다
- Swift UI와의 완벽한 통합
- 간편한 구성
- 데이터 자동 가져오기 및 뷰 업데이트
Swift Data 소개
표를 마크다운 형식으로 변경해 주세요.
@Model
class Category {
@Attribute(.unique) var name: String
var imageName: String
init(name: String,
imageName: String = "rupeesign.circle",
type: CategoryType) {
self.name = name
self.imageName = imageName
}
}
Using the model macro
Modifies all stored properties
@Model
- 강력한 새로운 스위프트 매크로
- 코드로 스키마 정의하기
- 모델 유형에 스위프트 데이터 기능 추가하기
속성을 어떻게 추론할지 제어합니다.
@Attributes
- 속성에서 추론된 속성
- 기본 값 유형 지원
- 구조체, 열거형, Codable 및 값 유형의 컬렉션과 같은 복잡한 값 유형의 지원
@관계
- 관계는 참조 유형에서 유추됩니다.
- 다른 모델 유형
- 모델 유형의 컬렉션
@Transient로 속성 제외
더 많은 정보: Swift Data로 스키마 모델링하기 (WWDC 2023)
데이터 작업하기
모델 컨테이너
- 영속성 백엔드
- 구성에 맞게 사용자 지정
- 스키마 마이그레이션 옵션 제공
.modelContainer(for: Category.self) { result in
// TODO: - 결과 처리
}
모델 컨텍스트
- 업데이트 추적
- 모델 가져오기
- 변경 내용 저장
- 변경 내용 취소
더 많은 정보: SwiftData에 대한 깊은 탐구 (WWDC 2023)
SwiftUI와 통합
SwiftData는 SwiftUI를 염두에 두고 만들어졌으며 함께 사용하는 것이 더 쉽습니다.
뷰 수정자
- 씬 및 뷰 수정자 활용
- .modelContainer로 데이터 구성
- SwiftUI 환경 전체에 전파됨
@Query Property Wrapper
@Query var categories: [Category]
var body: some View {
List(categories) { category in
NavigationLink(category.name, destination: CategoryView(category))
}
}
SwiftData와 SwiftUI가 함께 작동하여 기본 데이터가 변경될 때 뷰에 실시간 업데이트를 제공하며 결과를 수동으로 새로 고침할 필요가 없습니다.
변경 사항 관찰
@Published를 사용할 필요가 없습니다. SwiftUI는 관찰 대상 속성을 자동으로 새로 고칩니다.
추가 정보: SwiftData(WWDC 2023)를 활용하여 앱을 개발해보세요.
자동 지속성
SwiftData는 사용자 모델로 사용자 지정 스키마를 빌드하고 효율적으로 필드를 기반 저장소에 매핑합니다. SwiftData가 관리하는 객체는 필요할 때 데이터베이스에서 가져오고 추가 작업없이 적절한 시점에 자동으로 저장됩니다. 또한 ModelContext API를 사용하여 완전한 제어를 할 수도 있습니다.
CloudKit 동기화
데이터는 DocumentGroup을 사용하여 파일로 저장하고 iCloud Drive를 통해 동기화하거나 CloudKit을 사용하여 장치간 데이터 동기화를 할 수 있습니다.
Core Data와 호환 가능
SwiftData는 Core Data의 검증된 저장 아키텍처를 사용하므로 동일한 기본 저장소를 사용하여 동일한 앱에서 둘 다 사용할 수 있습니다. 준비가 되면 Xcode가 Core Data 모델을 SwiftData와 함께 사용할 클래스로 변환할 수 있습니다.