Как создать пользовательский общий абонент с комбинированным?IOS

Программируем под IOS
Ответить
Anonymous
 Как создать пользовательский общий абонент с комбинированным?

Сообщение Anonymous »

Вот мой customsubscriber . Все, что я хочу достичь, это заменить встроение .sink на мой собственный. Просто чтобы лучше понять, как это работает под капюшоном. < /P>
class CustomSubscriber: Subscriber where Failure: Error {
typealias Input = Input
typealias Failure = Failure

var completionValue: (CustomSubscriber.Input) -> Void
var completionEnd: (Subscribers.Completion) -> Void

private var subscription: Subscription?

init(completionValue: @escaping (Input) -> Void, completionEnd: @escaping (Subscribers.Completion) -> Void) {
self.completionValue = completionValue
self.completionEnd = completionEnd
}

func receive(subscription: any Subscription) {
self.subscription = subscription
}

func receive(_ input: Input) -> Subscribers.Demand {
completionValue(input)
return .none
}

func receive(completion: Subscribers.Completion) {
completionEnd(completion)
}
}

И вот я пытаюсь добавить расширение для Publisher :
extension Publisher {
func customSink(completionValue: @escaping (Output) -> Void, completionEnd: @escaping (Subscribers.Completion) -> Void) -> AnyCancellable {
subscribe(CustomSubscriber(completionValue: completionValue, completionEnd: completionEnd))
}
}
< /code>
Но я получаю ошибку: < /p>
//Instance method 'subscribe' requires that 'CustomSubscriber' conform to 'Subject'
< /code>
В конечном итоге я хотел бы использовать его как: < /p>
[1, 2, 3].publisher
.customSink(
completionValue: { print($0) },
completionEnd: { print($0) }
)


Подробнее здесь: https://stackoverflow.com/questions/796 ... th-combine
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»