[swift] 데이터 모델과 SwiftUI 뷰 간의 바인딩

iOS 앱을 개발할 때, 데이터 모델과 SwiftUI 뷰 간의 바인딩은 매우 중요합니다. 바인딩을 사용하면 데이터의 변경 사항이 뷰에 자동으로 반영되며, 사용자 인터페이스를 업데이트할 필요 없이 쉽게 데이터를 조작할 수 있습니다. 이번 글에서는 데이터 모델과 SwiftUI 뷰를 어떻게 바인딩하는지에 대해 알아보겠습니다.

데이터 모델

가장 먼저, 데이터 모델을 정의해야 합니다. 예를 들어, 간단한 작업 목록 앱을 만든다고 가정해보겠습니다. 작업을 나타내는 Task 구조체를 정의하고, 이 구조체에는 작업의 제목과 완료 여부를 저장하는 속성이 포함될 것입니다.

struct Task {
    var title: String
    var isComplete: Bool
}

SwiftUI 뷰

다음으로, SwiftUI 뷰를 만들어야 합니다. 이 예제에서는 작업의 제목과 완료 여부를 표시하고 토글할 수 있는 뷰를 만들 것입니다.

import SwiftUI

struct TaskView: View {
    @State var task: Task

    var body: some View {
        HStack {
            Text(task.title)
            Spacer()
            Toggle(isOn: $task.isComplete) {
                Text("완료")
            }
        }
    }
}

데이터 바인딩

데이터 모델과 SwiftUI 뷰를 바인딩하기 위해서는 @Binding 속성 래퍼를 사용해야 합니다. 이를 통해 뷰가 데이터 모델의 상태를 변경할 수 있습니다.

struct TaskListView: View {
    @State var tasks = [
        Task(title: "코드 리뷰", isComplete: false),
        Task(title: "제출 기한", isComplete: true)
    ]

    var body: some View {
        VStack {
            ForEach(tasks.indices, id: \.self) { index in
                TaskView(task: self.$tasks[index])
            }
        }
    }
}

위의 예제에서 TaskViewtask 속성은 @Binding으로 선언되어 있습니다. 이를 통해 TaskListView에서 tasks 배열의 요소를 바인딩할 수 있습니다.

마무리

바인딩을 통해 데이터 모델과 SwiftUI 뷰를 연결함으로써, 데이터의 변화에 따라 자동으로 뷰가 업데이트됩니다. 이를 통해 앱의 사용자 경험을 향상시키고, 데이터를 보다 쉽게 관리할 수 있습니다. SwiftUI에서 데이터 바인딩을 효과적으로 활용하여 멋진 사용자 인터페이스를 구축할 수 있습니다.

더 많은 바인딩 기능에 대해 알고 싶다면, Apple 공식 문서를 확인해 보시기 바랍니다.