Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프록시패턴
- WKWebView
- SWIFT
- unowned
- 어댑터패턴
- 템플릿메서드
- RxSwift
- 싱글턴패턴
- 전략패턴
- 옵저버패턴
- 파사드패턴
- 컴파운드패턴
- cocoapods
- 컴포지트패턴
- Scenedelegate
- 이터레이터패턴
- 디자인패턴
- Lifecycle
- Xcode
- 커맨드패턴
- 데코레이터패턴
- DispatchQueue
- ios
- ViewController
- Mobile
- 추상팩토리패턴
- 스트래터지패턴
- 스테이트패턴
- 상태패턴
- 팩토리메서드패턴
Archives
- Today
- Total
ios dev kangwook.
Swift) KVC(Key-Value Coding) 본문
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