반응형

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 {

 

반응형
Posted by 까칠코더
,