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 를 통해 특정 상황에서 매우 유연하게 속성에 접근하고 조작이 가능합니다.
코드를 작성할 때 속성에 대해 생각할 필요없이 런타임에 결정된 정보를 바탕으로 작업을 수행할 수 있다는 점이 장점입니다.
문자열로 속성 이름을 전달하기 때문에 잘못된 이름을 전달할 경우 컴파일 타임에서 에러가 아닌 런타임에서 에러가 발생합니다.
'iOS > Swift' 카테고리의 다른 글
[Swift] didSet,willSet 이란 (0) | 2024.08.27 |
---|---|
[Swift] Key-Value Observing (KVO) 란 (0) | 2024.08.27 |
[iOS][Swift] App LifeCycle - 앱 생명주기 (0) | 2024.05.24 |
[Swift] Extensions (확장) 이란 (1) | 2024.04.12 |
[Swift] unrecognized selector sent to instance (0) | 2023.06.02 |