Notice
Recent Posts
Recent Comments
Link
clyne의 개발 기록
[Swift] 간단하게 nil을 필터링! CompactMap! 본문
안녕하세요~!
iOS개발자 CNOO 입니다.
오늘은~~~
제가 자주 활용하는 CompatMap에 대해서 알아보겠습니다.
nil을 처리하는 방법은 다양합니다.
예제 1.
let array = [1, 2, nil, 4, 5, nil]
let nonNilArray1 = array.filter{ $0 != nil}
let nonNilArray2 = array.flatMap{ $0 }
let nonNilArray3 = array.compactMap{ $0 }
print(array) // [Optional(1), Optional(2), nil, Optional(4), Optional(5), nil]
print(nonNilArray1) // [Optional(1), Optional(2), Optional(4), Optional(5)]
print(nonNilArray2) // [1, 2, 4, 5]
print(nonNilArray3) // [1, 2, 4, 5]
그런데, 이중에, flatMap은 Swift 4에서 Deprecated되었다고 하네요..

왜 Deprecated되었는지는 찾아보기 귀찮아서........
잘 모르겠네요...
예제 2.
저는 compactMap을 RxSwift의 operator사이에 자주 끼워넣습니다.
let optionalIntRelay = PublishRelay<Int?>()
optionalIntRelay
.compactMap{ $0 }
.map{ "결과값은 \($0)"}
.bind(onNext: { print($0) })
.disposed(by: disposeBag)
optionalIntRelay.accept(1)
optionalIntRelay.accept(nil)
optionalIntRelay.accept(2)
이러면, nil 값은 필터링 되어서,
결과는

이렇게 나오게 됩니다!
저는 두 개의 예제만 보여드렸지만, nil처리하는 부분에서 많이 사용됩니다!
코드를 좀 더 예쁘게 만들 수 없을까 고민하실 떄, compactMap을 사용해보세요!!! ㅎㅎ
그럼 안뇽~
'iOS > Swift' 카테고리의 다른 글
[Swift] SubString 편하게 확장해보자! (0) | 2021.05.01 |
---|---|
[Swift] 특정 모서리만 코너 Round주기 (corner, border) (0) | 2021.04.30 |
[AVFoundation] 손전등 Torch (Flash) 사용법 (0) | 2021.04.28 |
[AVFoundation] Camera프리뷰 및 사진찍기 (기본 예제) (0) | 2021.04.27 |
[Swift] 카메라/사진 권한 요청 (0) | 2021.04.26 |