问题描述
我正在尝试获取EventDetailsModel
的初始值并订阅所有将来的更新。
当我打电话给eventDetails(..)
时,所有发布者中已经有一些当前值(即chatModels
和userModels
有10多个项目);问题在于,因为没有新的更新,所以由于从未调用EventDetailModels
,因此生成的管道永远不会返回.map(...)
。
构造管道时如何使组合管道至少通过现有值一次,以便接收器具有一些初始值?
var chatModels: Publishers.Share<CurrentValueSubject<[ChatModel],Never>> = CurrentValueSubject([]).share()
var userModels: CurrentValueSubject<[String: UserModel],Never> = CurrentValueSubject([:])
func eventDetails(forChatId chatId: String) -> AnyPublisher<EventDetailsModel?,Never> {
return chatModels
.combineLatest(userModels)
.map({ (chatList,userModels) -> EventDetailsModel? in
// Never gets called,even if chatModels and userModels has some existing data ?
if let chatModel = (chatList.first { $0.id == chatId}) {
return EventDetailsModel(chatModel,userModels)
}
return nil
})
.eraseToAnyPublisher()
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)