일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Protocol
- 클린 코드
- RxCocoa
- 스위프트
- 리펙터링
- UICollectionView
- tableView
- 애니메이션
- swiftUI
- uitableview
- clean architecture
- Clean Code
- map
- swift documentation
- 리팩토링
- Observable
- collectionview
- combine
- ribs
- Human interface guide
- ios
- Refactoring
- MVVM
- 리펙토링
- Xcode
- uiscrollview
- HIG
- SWIFT
- UITextView
- rxswift
- Today
- Total
목록KeyPath (6)
김종권의 iOS 앱 개발 알아가기
KVC와 KeyPath KVC(Key - Value coding) - 객체의 값을 직접 가져오지 않고 KeyPath를 이용해서 간접적으로 데이터를 가져오거나 사용 (key는 string) KeyPath 값에 대한 참조가 아닌, 프로퍼티를 참조 struct Person { var name: String } let person = Person(name: "jake") person.name // 값을 참조 person[keyPath: \.name] // 프로퍼티를 참조 KeyPath 종류 AntyKeyPath: 타입이 지워진 KeyPath PartialKeyPath: 부분적으로 타입이 지워진 KeyPath KeyPath: 읽기 전용 WriatableKeyPath: 읽기, 쓰기 가능 ReferenceWritab..
GeometryReader ContainerView이며, 내부에 UIView들의 layout을 쉽게 변경할 수 있는 역할 * GeometryReader를 안쓴 경우) Stack안에 두가지의 뷰가 들어가고, Rectangle이 하단의 모든 자리를 차지하는 형태 struct Example: View { var body: some View { VStack { Text("example GeoMetryReader") Rectangle() .foregroundColor(.green) } } } struct Example_Previews: PreviewProvider { static var previews: some View { Example() } } GeometryReader를 사용한 경우) GeometryRe..
KeyPath 이해하기 Key의 개념은 Objective-C에서 프로퍼티에 접근할 때 사용하는 개념 단순히 Key는 문자열 값이고, 이 문자열 값을 가지고 프로퍼티에 접근하는 방식 구체적인 개념은 이전 포스팅 글 참고 KeyPath는 Root라는 타입으로부터 구체적인 Value Type으로의 key의 경로를 의미 ex) KeyPath 개념 이해하기 이전 포스팅 글에서 알아본 KVC (Key Value Coding)에서 key값으로 프로퍼티에 접근하지만 또다른 방법으로 KeyPath를 통해 접근이 가능 // KVC에서 Key값으로 접근하는 방법 class Person: NSObject { // NSObject 서브클래싱 @objc var name: String? // @objc 어노테이션 } // KVC ..
KeyPath 특정 속성에 대한 path정보를 가지고 있는 key값 (KeyPath 인스턴스를 통해 해당 값에 접근이 가능) // KeyPath 문법: `\`키워드 + 유형 + 프로퍼티 이름 let nameKeyPath: KeyPath = \Person.name let person = Person(age: 12, name: "jake") print(person[keyPath: nameKeyPath]) // jake KeyPath 활용 - RxSwift의 Observable 구독 할때 특정 property를 가져오기 위해 map에서 사용 (간결성 향상) struct Person { var age: Int var name: String } var personObservable: Observable { Obs..
* KeyPath부터 구체적인 dynamic member lookup 개념은 이글 참고 dynamic member lookup @dynamicMemberLookup 키워드를 class, structure, enum, protocol에 적용하여 subscript(dynamicMember:)를 필수로 구현하게하여 런타임시점에 이름으로 dot ‘.’키워드로 접근 가능하도록 하는 방법 dot ‘.’ 키워드 사용하여 이름으로 접근 가능 주의: extension에는 @dynamicMemberLookup 적용 불가 ex) dyanmicMemberLookup을 사용하지 않고 subscript 구현 struct Person1 { var info: [String: String] // name: gender subscrip..
KeyPath란? 특정 루트 유형(class 타입, struct 타입)에서 value type으로의 참조를 의미 Property의 reference값을 의미 (c에서의 포인트 개념과 유사) * 구체적인 KeyPath, KVC, KVO 개념은 다음 포스팅 글 참고 KeyPath 사용 방법 KeyPath 참조 얻어내는 방법 let userNameKeyPath = \\User.name print(userNameKeyPath) // Swift.KeyPath KeyPath 참조를 통해 값에 접근하는 방법 let userNameKeyPath = \\User.name print(userNameKeyPath) // Swift.KeyPath let user1 = User(name: "jake", email: "a@a.c..