SwiftUI 튜토리얼을 따라하다가 아래와 같은 코드를 보게되었다.

struct HikeGraph: View {
    var hike: Hike
    var path: KeyPath<Hike.Observation, Range<Double>>

    var color: Color {
        switch path {
        case \\.elevation:
            return .gray
        case \\.heartRate:
            return Color(hue: 0, saturation: 0.5, brightness: 0.7)
        case \\.pace:
            return Color(hue: 0.7, saturation: 0.4, brightness: 0.7)
        default:
            return .black
        }
    }
}

...? 대체 \. 가 뭐지?

용어를 몰라서 어떻게 검색할지 고민하다가 처음 보는 키워드인 KeyPath에 대해 검색하게 되었다.

그런데!! \. 도 KeyPath와 연관이 있었다!! 그렇다면 KeyPath에 대해 공부해보자!

Key-Value Coding(KVC)란?


KeyPath를 공부하기 전에 우선 Key-Value Coding(KVC)에 대해 알아야 한다.

<aside> 💡 Key-Value Coding (KVC) 객체의 값을 직접 가져오지않고, Key 또는 KeyPath 를 이용해서 간접적으로 데이터를 가져오거나 수정하는 방법이다. key는 String이다.

👉 자세한 내용은 여기로

</aside>

아직은 어떤식으로 데이터를 가져온다는지 이해가 잘 되지 않는다! swift에서 제공하는 KeyPath 클래스와 예시를 보면서 이해해보자.

KeyPath란?


KeyPath는 값에 대한 참조가 아닌 프로퍼티에 대한 참조이다. 즉, 객체 내부의 값에 직접적으로 참조하는 것이 아니라 값의 이름(프로퍼티)를 참조하는 것이다.