본문 바로가기

개발

Combine Publisher - Just

728x90

Combine에서 지정된 유형의 단일 값을 방출한 다음 완료하는 퍼블리셔입니다. 기본 개념을 소개하고 데이터 스트림에서 알려진 초기 데이터를 제공하는 데 간단하지만 유용한 퍼블리셔입니다. Just(value)

다음은 세부 내용입니다 Just(Struct).

  • Just: 이는 단일 값을 방출하는 게시자를 생성하기 위해 Combine이 제공하는 함수입니다.
  • (Struct): 이 부분은 게시자가 방출할 값의 유형을 나타냅니다. 이 경우 구조체입니다.

예:

import Combine



// Define a struct for temperature data

struct TemperatureData {

  let value: Double

  let unit: String

}



// Create a Just publisher emitting a TemperatureData struct

let temperaturePublisher = Just(TemperatureData(value: 25.0, unit: "°C"))



// Define a subscriber to print the received data

let subscriber = Subscribers.Sink<TemperatureData, Never> { _ in

  // handle completion

} receiveValue: { value in

  print("Temperature: \(value.value)\(value.unit)")

}



// Subscribe the subscriber to the publisher

temperaturePublisher.sink(receiveCompletion: subscriber.receiveCompletion, receiveValue: subscriber.receiveValue)



// This will print:

// Temperature: 25.0°C

 

이 예에서:

  1. 온도 정보를 보관하는 구조체를 정의합니다 .TemperatureData
  2. 우리는 Just단일 인스턴스를 방출하는 게시자를 생성합니다 TemperatureData.
  3. 구독자는 수신된 데이터를 인쇄하도록 정의됩니다.
  4. 구독자가 게시자에 연결되었습니다.
  5. 이 코드는 온도 데이터를 인쇄합니다("온도: 25. 0°C").

사용 사례 Just:

  • 초기 데이터 제공: 데이터 스트림에 대한 알려진 시작 값을 제공하는 데 사용합니다 .Just
  • 간단한 데이터 시나리오: 단일 값만 내보내면 되는 간단한 사례에 사용하세요 .Just
  • 테스트: 테스트 목적으로 예측 가능한 데이터 스트림을 생성하는 데 사용됩니다 .Just

기억하다:

  • Just단일 값만 방출하도록 제한됩니다.
  • 여러 값을 내보내야 하는 시나리오에서는 사용자 지정 퍼블리셔와 같은 다른 퍼블리셔 유형을 고려하세요 .PassthroughSubject

이해 Just하고 해당 사용 사례를 통해 알려진 초기 데이터를 효과적으로 도입하고 Combine 애플리케이션에 간단한 데이터 스트림을 생성할 있습니다.

 

Combine Just 예제

다음은 Combine에서 publisher를 사용하여 UILabel의 초기 텍스트를 설정하는 방법의 예입니다 .Just

import Combine

import UIKit



// Create a UILabel

let label = UILabel()



// Create a Just publisher with the initial text

let initialTextPublisher = Just("Initial Text")



// Subscribe the UILabel to the publisher

initialTextPublisher

  .sink(receiveCompletion: { _ in

    // Handle completion (not applicable in this case)

  }, receiveValue: { value in

    label.text = value

  })

 

이 예에서:

  1. 우리는 . UILabel이라는 이름의 인스턴스를 생성합니다 label.
  2. "Initial Text"라는 문자열을 내보내는 Just게시자를 만듭니다 .initialTextPublisher
  3. 우리는 이 방법을 사용하여 게시자에게 sink구독을 요청합니다 .UILabel
  4. receiveValue구독자를 닫으면 게시자 가 내보낸 값으로 text속성이 설정됩니다.UILabel

이 코드를 실행하면 처음 UILabel에는 "초기 텍스트"라는 텍스트가 표시됩니다.

코드의 세부 내용은 다음과 같습니다.

  • JustPublisher: Publisher Just는 단일 값을 방출한 다음 완료하는 간단한 Publisher입니다. 이 경우 문자열 "Initial Text"를 방출합니다.
  • sink방법: 이 sink방법은 퍼블리셔를 구독자에게 연결하는 데 사용됩니다. 두 개의 클로저가 필요합니다. 하나는 완료를 처리하고 다른 하나는 수신된 값을 처리하기 위한 것입니다.
  • receiveValue클로저: 클로저는 receiveValue퍼블리셔가 값을 방출할 때마다 호출됩니다. 이 경우, 의 속성을 방출된 값으로 설정합니다 .textUILabel

Publisher Just Combine 애플리케이션의 UI 요소에 대한 초기 값을 설정하거나 데이터 스트림에 대한 알려진 시작점을 제공하는 유용한 도구입니다.

 

import Combine

import UIKit



// Create a UIView

let view = UIView()



// Create a Just publisher with the initial background color

let initialColorPublisher = Just(UIColor.red)



// Subscribe the UIView to the publisher

initialColorPublisher

  .sink(receiveCompletion: { _ in

    // Handle completion (not applicable in this case)

  }, receiveValue: { value in

    view.backgroundColor = value

  })

 

이 예에서:

  1. 우리는 . UIView이라는 이름의 인스턴스를 생성합니다 view.
  2. 이라는 색상을 내보내는 Just게시자를 만듭니다 .initialColorPublisherUIColor.red
  3. 우리는 이 방법을 사용하여 게시자에게 sink구독을 요청합니다 .UIView
  4. receiveValue구독자를 닫으면 방출 되는 색상 backgroundColor의 속성이 설정됩니다.UIView

이 코드를 실행하면 처음에는 배경색 UIView이 빨간색이 됩니다.

설명:

  • Just게시자: 이전 예와 유사하게 게시자 는 단일 값( 이 경우에는 색상) Just을 방출하는 데 사용됩니다 .UIColor.red
  • sink방법: 이 sink방법은 게시자와 구독자 간의 연결을 설정합니다. 완료 및 수신된 값을 처리하기 위해 두 개의 클로저가 필요합니다.
  • receiveValue클로저: 퍼블리셔가 값을 방출할 때마다 클로저가 실행됩니다. 여기서는 의 속성을 방출된 색상으로 설정하여 배경색을 빨간색으로 변경합니다.receiveValuebackgroundColorUIView

예제는 Just알려진 값을 기반으로 UI 요소의 초기 속성을 설정하는 사용할 있는 방법을 보여줍니다. 개념을 확장하여 다른 UI 속성을 설정하거나 Combine 사용하여 복잡한 데이터 유형을 처리할 있습니다.

'개발' 카테고리의 다른 글

Combine Publisher - Deferred  (0) 2024.07.08
Combine Publisher - Future  (1) 2024.07.08
Publisher & Subscriber - Combine  (0) 2024.07.08
Combine Publishers  (0) 2024.07.08
Combine Publisher  (0) 2024.07.08