일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- collectionview
- ribs
- SWIFT
- RxCocoa
- Observable
- Protocol
- 스위프트
- 클린 코드
- 리펙터링
- Human interface guide
- uiscrollview
- combine
- ios
- 애니메이션
- UICollectionView
- uitableview
- rxswift
- Refactoring
- MVVM
- Clean Code
- swiftUI
- Xcode
- 리펙토링
- map
- swift documentation
- clean architecture
- HIG
- UITextView
- tableView
- 리팩토링
- Today
- Total
목록flatMap (11)
김종권의 iOS 앱 개발 알아가기
1. map과 flatMap의 차이 - CollectionType에서 쓰임 CollectionType에서 접근: array와 같은 각 개별 요소에 접근하여 변화를 주는 것 만약 Element중에 Optional값이 있다면 flatMap은 unwrap을 해주고, map은 unwrap을 해주지 않음 단, flatMap은 deprecated되어 compactMap 사용 // 'flatMap' is deprecated: Please use compactMap(_:) for the case where closure returns an optional value let c = [1, 2, Optional(3)] .flatMap { $0 } print(c) // [1, 2, 3] 2. map과 flatMap의 차이 ..
Optional에서의 map, flatMap 개념 보통 map, flatMap은 Collection Type에서 사용하지만, Optional 내부를 보면 함수로 map, flatMap이 존재 @frozen public enum Optional : ExpressibleByNilLiteral { case none case some(Wrapped) @inlinable public func map(_ transform: (Wrapped) throws -> U) rethrows -> U? @inlinable public func flatMap(_ transform: (Wrapped) throws -> U?) rethrows -> U? } map 개념 Optional 타입에 nil이 아닌 값이라면, Optional..
1. Higher order function (고차함수) 직접 구현 방법 - map, filter, reduce 2. Higher order function (고차함수) 직접 구현 방법 - flatMap, compactMap flatMap, compactMap flatMap, compactMap은 higher order function (고차함수) higher order function이란? 다음 두 가지 중 하나에 해당 하나 이상의 함수를 인자로 받는 것 함수를 결과로 리턴하는것 flatMap 옵셔널바인딩 + nil제거 + 차원 축소 swift4.1부터는 flatMap을 사용할땐 차원 축소 기능만 사용하려고하고, 옵셔널 바인딩과 nil제거는 compcatMap을 사용 권장 [[1,2], [3,4]].f..
목차) Combine - 목차 링크 Map 값 요소들을 하나씩 맵핑 (값에 변화를 주는 연산자) let publisher1 = [1, 2, 3].publisher let cancellable1 = publisher1 .map { $0 + 2 } .sink(receiveValue: { print($0) }) /* 3 4 5 */ tryMap map 클로저 내부에서 예외가 던져질 수 있는 연산이 있을때 사용 예외 처리하는 곳은 sink의 receiveCompletion에서 수행 enum SomeError: Error { case zero } let publisher2 = [2, 1, 0].publisher let cancellable2 = publisher2 .tryMap { guard $0 != 0 els..
Swift에서의 map의 역할 map, flatMap 둘 다 클로저가 Optional일 때와 non-Optional일때의 기능이 다르므로 주의 Optional일때의 기능 - 형변환 (flatMap은 형변환을 완료하고 unwrapping까지 수행) non-Optional일때의 기능 - 원소들에 하나하나씩 접근하여 변형을 주는 것 non-Optional일때의 map 예시) let someString = "123456" let newString = someString .map { String($0) + "a" } print(newString) // ["1a", "2a", "3a", "4a", "5a", "6a"] non-Optional일때의 flatMap 예시) flatMap의 역할 - Sequence의 배열..
1. RxSwift의 Map, FlatMap - 사용하여 비동기를 순서대로 처리 방법 2. RxSwift의 Map, FlatMap - 사이드 이펙트 처리 방법 (throw와 catch 사용) map과 flatMap 연산자 개념을 구분 개념 구분 flatMap은 블록 내에서 Observable을 리턴해야하므로, API를 사용할때 응답값이 Observable일때 flatMap사용 map의 리턴값은 Observable이 아니고, 사이드이펙트 처리 시 throw를 리턴하여 처리 주의사항: 스트림안에서 throw가 하나라도 방출되면, 해당 stream은 dispose되므로 사용자가 계속 재시도 할 수 있는 이벤트 처리에는 부적합한것을 주의 (예제 상황도 사용자가 계속 시도할 수 있으므로 부적합하지만 설명을 위해서..
1. RxSwift의 Map, FlatMap - 사용하여 비동기를 순서대로 처리 방법 2. RxSwift의 Map, FlatMap - 사이드 이펙트 처리 방법 (throw와 catch 사용) 편리를 위해 사용한 프레임워크 # UI pod 'SnapKit' pod 'Then' # Rx pod 'RxSwift' pod 'RxCocoa' # Network pod 'Moya/RxSwift' # Utils pod 'JGProgressHUD' # 로딩 사용한 API - Unsplash 이미지 조회를 위한 API https://unsplash.com/documentation 비동기 작업 순서 `확인` 버튼 탭 API를 통해서 이미지 url 획득, url을 UILabel에 입력 로딩 프로그래스 바 표출 후, url을 ..
고차함수 고차함수: parameter로 함수를 받는 함수 - higher order function: 함수 내부에서 일어나는 특성 (함수를 인수로 받는 것, 함수를 리턴하는 것) - first class: 함수 외부에서 일어나는 특성 (함수를 변수에 대입 가능한 것) let numbers = [1, 2, 3, 4] let newNumbers = numbers.map { number in return number + 1 } 대표적으로 3가지 존재: map(맵핑), filter(추출), reduce(결합, 차원을 줄여주는 것) - reduce는 초기값을 넣어주고, 클로저의 인수는 누적해서 쌓이는 값 하나와 배열의 값 let numbers = [1, 2, 3, 4] let mapEx = numbers.map ..