Hacking with Swift 사이트의 강좌 번역본입니다.
[원문 : https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-core-data-objects-from-swiftui-views]
How to add Core Data objects from SwiftUI views
SwiftUI에서 Core Data 객체를 저장하는 것은 SwiftUI의 외부에서 작업하는 것과 정확히 같은 방법입니다: 관리 객체 컨텍스트를 사용하고, 해당 컨텍스트 내부에 타입 인스턴스를 만들고, 준비되면 그 컨텍스트를 저장합니다.
Core Data와 SwiftUI 설정 지침을 따르는 경우, 이미 관리 객체 컨텍스트가 SwiftUI environment에 추가되어 있습니다.
Core Data 객체를 만들어야 하는 곳이라면 관리 객체 컨텍스트를 바로 읽기 위해서 ContentView에 @Environment 프로퍼티를 추가해야 합니다.
@Environment(\.managedObjectContext) var managedObjectContext
다음으로, 계속해서 필요한 곳에 Core Data 엔티티(entity) 클래스의 인스턴스를 만들고, 해당 managedObjectContext를 참조하세요. 예제 설정 에서, name과 creator프로퍼티로 된 ProgrammingLanguage 엔티티(entity)를 가지고 있으므로, 다음과 같이 SwiftUI 버튼 동작 내부에 하나를 만들수 있습니다.
Button(action: {
let language = ProgrammingLanguage(context: self.managedObjectContext)
language.name = "Python"
language.creator = "Guido van Rossum"
// more code here
}) {
Text("Insert example language")
}
마지막으로, 적절하게 컨텍스트를 저장합니다 - 즉시 저장될수도 있고, 객체의 그룹이 추가되고, 앱 상태가 변경할때 저장될 수 있습니다. 그렇게 하려면 다음과 같이 // more code here를 교체하세요.
do {
try self.managedObjectContext.save()
} catch {
// handle the Core Data error
}
새로운 객체 만드는 것을 직접처리 하지 않는 일반적인 저장의 경우에, 다음과 같이 일반적으로 관리 객체 컨텍스트가 변경사항이 있는지 확인하기 위한 검사를 추가할 가지가 있습니다.
if self.managedObjectContext.hasChanges {
'SwiftUI by Example > Core Data' 카테고리의 다른 글
How to delete Core Data objects from SwiftUI views (0) | 2019.12.03 |
---|---|
How to filter Core Data fetch requests using a predicate (0) | 2019.12.03 |
How to create a Core Data fetch request using @FetchRequest (0) | 2019.12.03 |
How to access a Core Data managed object context from a SwiftUI view (0) | 2019.12.03 |
How to configure Core Data to work with SwiftUI (0) | 2019.12.02 |
Introduction to using Core Data with SwiftUI (0) | 2019.12.02 |