일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Protocol
- HIG
- 스위프트
- 클린 코드
- UITextView
- 리팩토링
- combine
- SWIFT
- Observable
- rxswift
- RxCocoa
- MVVM
- map
- Human interface guide
- Xcode
- clean architecture
- tableView
- ribs
- ios
- Refactoring
- 애니메이션
- Clean Code
- swiftUI
- 리펙토링
- 리펙터링
- uitableview
- UICollectionView
- swift documentation
- uiscrollview
- collectionview
- Today
- Total
목록swiftUI (160)
김종권의 iOS 앱 개발 알아가기
목차) Combine - 목차 링크 Sequence 연산자 drop(while:) 일반 while (condition) { body } 과 동일 while 안에 조건이 true일때만 값을 drop [1,3,5,7,8,9]가 있을때 1, 3, 5, 7 까지 계속 홀수이므로 while문 내부가 true이므로 모두 drop 8에서 while문이 false이므로 while문이 break while문이 break되었으므로 9는 방출 [1,3,5,7,8,9].publisher .drop(while: { $0 % 2 != 0 }) .sink { print($0, terminator: " ") } // 8 9 dropFirst() 첫번째 요소만 drop [1,2,3,4,5].publisher .dropFirst() ...
목차) Combine - 목차 링크 Math 연산자 .count() 의미 그대로 배열의 갯수를 반환 max(by:) by에 해당하는 조건을 갖는 최댓값 반환 [(1, 2), (1, 3), (1, 4)].publisher .max(by: { $0.1 < $1.1 }) .sink { print($0) } // (1, 4) tryMax() throw를 던질 수 있는 max 연산자 struct MinusError: Error {} [1,2,-1,3,4].publisher .tryMax { first, second in // first, second = (1, 2), (2, -1), (-1,3), ... guard first != -1, second != -1 else { throw MinusError.init(..
목차) Combine - 목차 링크 Reduce 배열과 같은 Sequence형태를 하나의 값이나 축소 시키는 연산자 collect 연산자 collect(n)이면 n 만큼 묶어서 방출 (0...10).publisher .collect(5) .sink { print($0) } /* [0, 1, 2, 3, 4] [5, 6, 7, 8, 9] [10] */ ignoreOutput() 값이 방출되는 값은 모두 무시하고 completion의 failure만 방출 struct NoZeroValuesAllowedError: Error {} let numbers = [1, 2, 3, 4, 5, 0, 6, 7, 8, 9] numbers.publisher .tryFilter({ anInt in guard anInt != 0 ..
목차) Combine - 목차 링크 Filtering 연산자 filter // filter [1,2,3].publisher .filter { $0 % 2 == 0 } .sink(receiveValue: { print($0) }) .store(in: &cancellable) // 2 tryFilter 특정 조건에 해당하면 Error를 throw throw를 처리하는 곳은 .sink의 receiveCompletion에서 수행 주의할점은 throw가 발생하면 해당 스트림은 해제되기 때문에 3은 방출되지 않음 [1,2,-1,3].publisher .tryFilter { if $0 == -1 { throw MyError.a } else { return true } } .sink( receiveCompletion..
목차) SwiftUI의 기본 - 목차 링크 trim(from:to:) trim: 불필요한 부분을 잘라내는 것 trim(from:to:) - from과 to 파라미터에 들어가는 값은 0에서 1의 값 이전 포스팅에서 알아본 SwiftUI의 Path로 만들어진 부분에 trim을 적용하여 사용 Path로 만들어진 것들 -> Shape 프로토콜을 준수하고 있는 형태에 모두 적용 가능 from에는 Path의 시작점이 들어가고, to는 Path의 남겨질 부분의 끝점이 들어가며, 이 점들을 잇는 도형으로 표현 주의: trim이지만, from과 to에 들어가는 부분을 잘라내는게 아닌 그 부분을 살려내는 것 ex) Circle은 Shape 프로토콜을 준수하고 있어서 (= Path로 그러진 형태), trim 사용이 가능 (..
목차) SwiftUI의 기본 - 목차 링크 Redacted 란 * redact: (민감한 정보를) 수정하다 어떤 정보를 수정할 때, 관련 이유를 redacted(reason:) 파라미터로 넣으면 그에 따른 UI를 보여주는 메소드 (스켈레톤 뷰처럼 뷰의 내용을 가려서 보여주는 것) 파라미터로 들어갈 수 있는 값은 .placeholder와 .privacy 존재 .redacated(reason: .placeholder) 사용 방법 ex) 프로필 뷰를 보여줄 때 api 로딩 전에 placeholder를 보여주고 싶은 경우 사용 프로필 뷰 구현 struct ContentView: View { @State var isLoading = true var body: some View { profileView } @Vie..
목차) SwiftUI의 기본 - 목차 링크 지역화 기존에 Swift에서 지역화 처리 방법 Localizable.strings 파일을 만든 후 (key-value) 로 스트링 값을 입력 NSLocalizedKey를 사용하고 위 key에 접근하여 사용 UILabel(string: NSLocalizedString(key: "myKey")) SwiftUI에서 지역화 처리 방법 Localizable.strings 파일을 만든 후 (key-value)로 스트링 값을 입력 .environment(_:_:)을 이용하여 지역화 .environment(\.locale, .init(identifier: "en")) Localization 파일 준비 Localized.strings 파일 생성 String File 선택 Loc..
목차) SwiftUI의 기본 - 목차 링크 Preference 란? key와 vallue로 구성된 데이터 전달 메소드 데이터 전달: 하위 뷰 -> 상위 뷰 Preference 사용 방법 키를 가지고 접근 1. 키 등록: preferenceKey 프로토콜 준수 2. 하위뷰에서 값 송신: preference(key:value:) 메소드 3. 상위뷰에서 값 수신: onPreferenceChange() 메소드 ex) 하위 뷰의 navigationTitle이 변경될때마다 부모 뷰에서 타이틀이 변경될때마다 print하기 1. 키 등록: preferenceKey 프로토콜 준수 // PreferenceKey 내부 코드 @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0..