encode는 Publisher가 발행하는 데이터를 JSON, Plist 등의 형식으로 인코딩하는데 사용되는 Operator에요.
Encodable을 준수하는 타입의 인스턴스를 받아, Data 타입으로 인코딩된 데이터를 발행하는 새로운 Publisher을 생성해요.
JSONEncoder()
, PropertyListEncoder()
처럼 TopLevelEncoder 프로토콜을 채택한 클래스로 encoding 해요.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\\"}")