[ios] Combine 프레임워크에서의 데이터 변환 방법

Combine은 Swift에서 비동기적인 이벤트 스트림을 처리하기 위한 프레임워크로, 데이터의 변환은 Combine에서 중요한 부분입니다. 이 포스트에서는 Combine 프레임워크에서의 데이터 변환 방법에 대해 알아보겠습니다.

  1. Map을 사용한 데이터 변환
  2. FlatMap을 사용한 데이터 변환
  3. CompactMap을 사용한 데이터 변환

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 프레임워크 문서를 참고하세요.