본문 바로가기

iOS/Swift

[Swift] Key-Value Coding(KVC) 란

Key-Value Coding(KVC) 란

 

Key-Value Coding(KVC)는 Objective-C에서 유래한 프로그래밍 기법으로, KVC는 객체의 속성에 대해 직접 접근하고 수정할 수 있는 방법을 제공합니다. 주로 Dynamic Programming과 관련된 작업을 할 때 유용합니다.

 

 

사용 예시

import Foundation

class Person: NSObject {
    @objc var name: String
    @objc var age: Int
    
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

let person = Person(name: "John", age: 30)

// Key-Value Coding을 사용한 속성 접근
let name = person.value(forKey: "name") as? String
let age = person.value(forKey: "age") as? Int

print("Name: \(name ?? "Unknown"), Age: \(age ?? 0)")

// Key-Value Coding을 사용한 속성 변경
person.setValue("Doe", forKey: "name")
person.setValue(35, forKey: "age")

print("Updated Name: \(person.name), Updated Age: \(person.age)")

 

Person 클래스: Person 클래스는 name과 age라는 두 개의 속성을 가지고 있습니다. 이 속성들은 @objc 속성을 가지고 있어 KVC를 사용할 수 있게 해줍니다.

 

value(forKey:) 메서드: value(forKey:)를 사용하여 문자열 "name"과 "age"로 해당 속성의 값을 가져옵니다.

 

setValue(_:forKey:) 메서드: setValue(_:forKey:)를 사용하여 "name" 속성 값을 "Doe"로, "age" 속성 값을 35로 변경합니다.

 

 

왜 사용해야할까 or 나만의 고민

 

KVC 를 통해 특정 상황에서 매우 유연하게 속성에 접근하고 조작이 가능합니다.

코드를 작성할 때 속성에 대해 생각할 필요없이 런타임에 결정된 정보를 바탕으로 작업을 수행할 수 있다는 점이 장점입니다.

문자열로 속성 이름을 전달하기 때문에 잘못된 이름을 전달할 경우 컴파일 타임에서 에러가 아닌 런타임에서 에러가 발생합니다.