안녕하세요 공공돌🧸 입니다.
오늘은 SwiftData에 대해 공부해봤습니다.
1. Introducing SwiftData
The Future of Data Persistence in SwiftUI
새로운 SwiftData 프레임워크는 선언적인 코드를 사용하여 데이터를 지속하는 것을 쉽게 만들어줍니다.
정규 Swift 코드를 사용하여 데이터를 쿼리하고 필터링할 수 있습니다.
그리고 SwiftUI와 원활하게 통합되도록 설계되었습니다.
Create models with Swift ( Swift로 모델 생성하기 )
데이터를 @Model을 사용하여 일반 Swift 타입으로 모델링하세요. 추가적인 파일이나 도구 없이 관리할 수 있습니다.
SwiftData는 많은 관계를 자동으로 추론할 수 있으며 @Attribute(.unique)와 같은 명확한 선언을 사용하여 제약 조건을 설명할 수 있습니다. SwiftUI와 마찬가지로 진실의 원천은 코드 내에 있습니다.
@Model
class Recipe {
@Attribute(.unique) var name: String
var summary: String?
var ingredients: [Ingredient]
}
Automatic persistence ( 자동 지속성 )
SwiftData는 모델을 사용하여 사용자 정의 스키마를 빌드하고 그들의 필드를 효율적으로 기본 저장소에 매핑합니다.
SwiftData로 관리되는 객체들은 필요할 때 데이터베이스에서 가져오고 추가적인 작업 없이 자동으로 올바른 시점에 저장됩니다.
또한 ModelContext API를 사용하여 완전한 제어를 할 수도 있습니다.
Integrates with SwiftUI ( SwiftUI와 통합 )
SwiftData와 SwiftUI가 함께 작동하여 SwiftUI 뷰에서 데이터를 가져오는 데 @Query를 사용하세요.
기본 데이터가 변경될 때 뷰에 실시간 업데이트를 제공하기 위해 SwiftData와 SwiftUI가 함께 작동하여 결과를 수동으로 새로 고칠 필요가 없습니다.
@Query var recipes: [Recipe]
var body: some View {
List(recipes) { recipe in
NavigationLink(recipe.name, destination: RecipeView(recipe))
}
}
Swift-native predicates ( Swift기반 예측자 )
데이터를 쿼리하고 필터링하기 위해 컴파일러에서 유형을 확인하는 표현식을 사용하세요.
이렇게 하면 개발 중에 오타나 실수를 쉽게 잡을 수 있습니다.
예측기는 표현식을 기본 저장 엔진에 매핑할 수 없는 경우 컴파일 시간 오류를 제공합니다.
let simpleFood = #Predicate<Recipe> { recipe in
recipe.ingredients.count < 3
}
CloudKit syncing ( CloudKit 동기화 )
데이터는 DocumentGroup을 사용하여 파일에 저장되고 iCloud Drive를 통해 동기화될 수 있습니다.
또는 CloudKit을 사용하여 기기 간에 데이터를 동기화할 수도 있습니다.
Compatible with Core Data ( Core Data와 호환 가능 )
SwiftData는 Core Data의 검증된 저장 아키텍처를 사용하므로 동일한 기본 저장소를 사용하여 동일한 앱에서 둘 다 사용할 수 있습니다. 준비가 되면 Xcode가 Core Data 모델을 SwiftData와 함께 사용할 클래스로 변환할 수 있습니다.
참조 링크 🍎
SwiftUI Overview - Xcode - Apple Developer
SwiftUI is an innovative, exceptionally simple way to build user interfaces across all Apple platforms with the power of Swift.
developer.apple.com
공부하는 공돌이, 공공돌입니다🐻
@sheep1sik
'iOS > SwiftData' 카테고리의 다른 글
[ SwiftData ] Defining a new data model (26) | 2024.01.30 |
---|