encode는 Publisher가 발행하는 데이터를 JSON, Plist 등의 형식으로 인코딩하는데 사용되는 Operator에요.

Encodable을 준수하는 타입의 인스턴스를 받아, Data 타입으로 인코딩된 데이터를 발행하는 새로운 Publisher을 생성해요.

기능

사용

struct User: Encodable {
  let name: String
  let age: Int
  let id = UUID()
}

let userPublisher = PassthroughSubject<User, Error>()

userPublisher
  .encode(encoder: JSONEncoder())
  .sink { completion in
    print(completion)
  } receiveValue: { value in
    let jsonString = String(data: value, encoding: .utf8)
    print(jsonString)
  }
  .store(in: &cancellables)

let user = User(name: "russell", age: 87)

userPublisher.send(user)

// 결과
Optional("{\\"age\\":87,\\"name\\":\\"russell\\",\\"id\\":\\"57872AA3-3017-4322-9F08-FE8F180DB927\\"}")