[ios] Combine 프레임워크에서의 데이터 변환 방법
Combine은 Swift에서 비동기적인 이벤트 스트림을 처리하기 위한 프레임워크로, 데이터의 변환은 Combine에서 중요한 부분입니다. 이 포스트에서는 Combine 프레임워크에서의 데이터 변환 방법에 대해 알아보겠습니다.
Map을 사용한 데이터 변환
Map은 Combine에서 데이터를 변환하는 데 사용되는 연산자 중 하나입니다. 이 연산자는 입력 스트림의 각 요소를 변환하여 출력 스트림에 새로운 요소를 생성합니다. 예를 들어, 정수 값을 받아서 문자열 값으로 변환하는 경우에 사용할 수 있습니다.
import Combine
let publisher = Just(5)
let mappedPublisher = publisher.map { "\($0)" }
// 출력: "5"
let _ = mappedPublisher.sink { value in
print(value)
}
FlatMap을 사용한 데이터 변환
FlatMap은 Combine에서 데이터 변환을 위해 사용되는 다른 연산자입니다. 이 연산자는 각 입력 요소를 변환하고, 그 결과를 단일 스트림으로 평탄화합니다. 이는 입력 스트림의 각 요소를 스트림으로 매핑하고, 그 결과를 결합하는 데 사용됩니다.
import Combine
let publisher = Just(5)
let flatMappedPublisher = publisher.flatMap { value in
return Future { promise in
promise(.success(value * 2))
}
}
// 출력: 10
let _ = flatMappedPublisher.sink { value in
print(value)
}
CompactMap을 사용한 데이터 변환
CompactMap은 Combine에서 nil이 아닌 값만을 포함하는 새로운 스트림을 생성하기 위해 사용하는 연산자입니다. 이 연산자는 옵셔널 값을 포함하는 스트림을 받아서, nil
이 아닌 값만을 포함하는 새로운 스트림을 생성합니다.
import Combine
let publisher = PassthroughSubject<Int?, Never>()
let compactMappedPublisher = publisher.compactMap { $0 }
let _ = compactMappedPublisher.sink { value in
print(value)
}
publisher.send(5) // 출력: 5
publisher.send(nil) // 출력되지 않음
위의 예제 코드에서는 Combine 프레임워크에서의 데이터 변환에 사용되는 map
, flatMap
, 그리고 compactMap
에 대해 간단히 알아보았습니다. 이러한 데이터 변환 연산자들은 Combine 프레임워크를 사용하여 비동기 데이터 처리를 보다 쉽게 만들어 줍니다.
더 많은 정보를 원하시면 공식 Combine 프레임워크 문서를 참고하세요.