SwiftUi로 TodoApp 만들기 using coreData (2)

농담고미고미·2024년 12월 23일
0

프론트엔드

목록 보기
5/12
@Environment(\.managedObjectContext) var managedObjectContext

@Environment(.managedObjectContext)는 SwiftUI에서 Core Data의 managedObjectContext를 환경에서 가져오기 위해 사용하는 프로퍼티 래퍼입니다. 이를 통해 SwiftUI 뷰에서 Core Data의 데이터를 저장, 삭제, 가져오는 등의 작업을 쉽게 할 수 있습니다.

AddTodoView().environment(\.managedObjectContext, self.managedObjectContext)

AddTodoView().environment(.managedObjectContext, self.managedObjectContext)는 SwiftUI에서 Core Data를 사용하기 위해 managedObjectContext를 자식 뷰에 전달하는 코드입니다.

managedObjectContext란?

Core Data에서 데이터의 저장, 삭제, 가져오기 등의 작업을 처리하는 NSManagedObjectContext를 의미합니다.
데이터베이스와 애플리케이션 간의 인터페이스 역할을 하며, 작업 단위로 데이터를 관리합니다.
데이터가 변경되면 이를 메모리에서 관리하며, 저장할 때 디스크에 반영합니다.

AddTodoView로 넘어가서 Environment(.managedObjectContext) var managedObjectContext)를 추가한다.

Button(action: {
                        if self.name != "" {
                            let todo = Todo(context: self.managedObjectContext)
                            todo.name = self.name
                            todo.priority = self.priority
                            
                            do {
                                try self.managedObjectContext.save()
                                print("New todo: \(todo.name ?? ""), Priority: \(todo.priority ?? "")")
                            } catch {
                                print(error)
                            }
                        } else {
                            self.errorShowing = true
                            self.errorTitle = "유효하지 않은 투두 이름"
                            self.errorMessage = "새로운 투두를 입력하세요."
                            return
                        }

Todo를 가져와서 이름과 우선순위에 대입한 후, self.managedObjectContext.save()로 저장한다.

만약에 errorShowing = true라면 alert를 보여준다.

.alert(isPresented: $errorShowing) {
                Alert(title: Text(errorTitle), message: Text(errorMessage), dismissButton: .default(Text("OK")))
            }

profile
농담곰을 좋아해요 말랑곰탱이

0개의 댓글