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
- Protocol
- uitableview
- UITextView
- Human interface guide
- 리펙터링
- map
- uiscrollview
- swift documentation
- ios
- SWIFT
- rxswift
- 리펙토링
- ribs
- 리팩토링
- Refactoring
- UICollectionView
- Clean Code
- tableView
- collectionview
- Observable
- HIG
- 스위프트
- RxCocoa
- 애니메이션
- MVVM
- Xcode
- clean architecture
- swiftUI
- 클린 코드
- combine
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - SwiftUI] Combine Matching 연산자 (contains, tryContains, allSatisfy, tryAllSatisfy) 본문
iOS Combine (SwiftUI)
[iOS - SwiftUI] Combine Matching 연산자 (contains, tryContains, allSatisfy, tryAllSatisfy)
jake-kim 2022. 11. 12. 23:46목차) Combine - 목차 링크
Matchging 연산자
* Combine에서 제공하는 Matching 연산자는 기존 Swift에서 제공하는 연산자의 인터페이스와 동일하게 설계되어 사용하기 쉽도록 구현
- contains(where:)
- where 클로저 조건에 따라 Bool 반환
[1,2,3,4,5].publisher
.contains(where: { $0 == 3 })
.sink { print($0) }
// true
- tryContains(where:)
- contains는 true를 반환하면 이후 값에 관해서 체크하지 않음을 주의 (아래에서 true를 먼저 반환하므로 throw 발생 x)
[1,2,3,4,5].publisher
.tryContains(where: {
guard $0 != 5 else { throw SomeError() }
return $0 == 3
})
.sink(
receiveCompletion: { print("completion: \($0)") },
receiveValue: { print("value: \($0)") }
)
// value: true
// completion: finished
- allSatisfy()
- 클로저안의 모든 조건이 true이면 true반환
[1,2,3,4,5].publisher
.allSatisfy { $0 < 6 }
.sink { print($0) }
// true
- tryAllSatisfy()
- tryContains(where:)와는 다르게 모든 값들을 비교해야하므로, throw 발생
[1,2,3,4,5].publisher
.tryAllSatisfy {
guard $0 != 5 else { throw SomeError() }
return $0 < 6
}
.sink(
receiveCompletion: { print("completion: \($0)") },
receiveValue: { print("value: \($0)") }
)
// completion: failure(ExMatching.SomeError())
'iOS Combine (SwiftUI)' 카테고리의 다른 글
Comments