ios dev kangwook.

Swift) KVC(Key-Value Coding) 본문

Swift

Swift) KVC(Key-Value Coding)

kangwook 2022. 10. 11. 22:28

KVC란 객체의 값을 직접 가져오지 않고 Key 또는 KeyPath를 이용해서 간접적으로 데이터를 가져오거나 수정하는 방법

여기서 key는 String값

KeyPath

KeyPath는 값에 대한 참조가 아닌 프로퍼티에 대한 참조

즉 객체 내부의 값에 직접적으로 참조하는 것이 아니라 값의 이름(프로퍼티)을 참조하는 것

값에 대한 직접 참조

struct Address {
    var town: String
}
 
struct Person {
    var address: Address
}
let address = Address(town: "어쩌구")
let zedd = Person(address: address)
 
print(zedd.address)
print(zedd.address.town)

프로퍼티에 대한 직접 참조

struct Address {
    var town: String
}
 
struct Person {
    var address: Address
}
let address = Address(town: "어쩌구")
var zedd = Person(address: address)
 
zedd[keyPath: \.address.town] // 어쩌구
 
zedd[keyPath: \.address.town] = "바보"
zedd[keyPath: \.address.town] // 바보
zedd.address.town // 바보

KeyPath의 종류

  • AnyKeyPath : 타입이 지워진 KeyPath
  • PartialKeyPath : 부분적으로 타입이 지워진 KeyPath
  • KeyPath : Read-Only
  • WritableKeyPath : value type 인스턴스에 사용 가능. 변경 가능한 모든 프로퍼티에 대한 read & write access 제공
  • ReferenceWritableKeyPath : 클래스의 인스턴스에 사용 가능. 변경 가능한 모든 프로퍼티에 대한 read & write access 제공

let 이면 자동으로 KeyPath 타입, var 이면 자동으로 WritableKeyPath 타입

'Swift' 카테고리의 다른 글

nil, Nil, NSNull, Null에 대한 고찰  (0) 2024.01.05
Swift) Enumeration  (0) 2022.10.04
Swift) Initialization  (0) 2022.10.02
Swift) Property  (0) 2022.09.25
Swift) Semaphore  (0) 2022.09.25
Comments