У меня есть два издателя, каждый из которых может публиковать ценность или полную версию без публикации вообще. Я объединяю двух издателей и сравниваю их значения, выполняю некоторую пост-обработку значений и сохраняю их в моем локальном CoreData. Упрощенный код выглядит так:
let p1 = ["1"]
.publisher
.map { Int($0) }
let p2 = ["2"]
.publisher
.map { Int($0) }
let p1p2 = p1.combineLatest(p2)
.map { $0 == $1 }
.sink { print($0) }
Но в случае, если один из издателей не публикует какое-либо значение, мне все равно нужно сохранить оставшееся значение в моей локальной БД. Проблема в том, что оператор combLatest не запускает никакого события, если один из издателей завершает работу, не запустив значение. Я пробовал операторы добавления и добавления, но их нельзя комбинировать с какими-либо условиями, например, если один из издателей закончит, не опубликовав какое-либо значение.
Например, что-то вроде:
let p1String: [String] = []
let p1 = p1String.publisher
.map { Int($0) }
.if(completionWithoutPublishing, perform: { prepend(nil) })
Любые идеи поощряются.