【发布时间】:2020-11-16 12:25:21
【问题描述】:
可观察代码
private let reviewPublish = PublishSubject<Review>()
var review$: Observable<Review> {
return reviewPublish.asObservable()
}
发布代码
DB_REVIEWS.observe(.value){ snapShot in
for child in snapShot.children {
guard let snap = child as? DataSnapshot else { return }
guard let data = snap.value as? [String: Any] else { return }
var review = Review()
review = self.changeDictionaryToReview(data, snap.key)
self.reviewPublish.onNext(review)
}
self.reviewPublish.onCompleted()
}
订阅码
DBUtil.shared.review$.subscribe(onNext: {
self.reviews.append($0)
}).disposed(by: self.disposeBag)
问题
我在应用程序启动时订阅了。因此,从数据库中获取评论并将它们存储在数组中成功了。但是,无法实时反映。应用启动后,如果用户添加新评论,则不会反映。 "self.reviewPublish.onNext(review)" 有效,但 viewController 中的订阅代码无效。
有什么想法吗?
【问题讨论】:
-
当你在发布主题这样的主题上调用这个 self.reviewPublish.onCompleted() 时,这意味着这个流已经完成并且应该完成,如果你想保留它就不应该调用它活着
-
感谢您的友好回答。多亏了你,我才能解决它。
标签: ios swift firebase firebase-realtime-database rx-swift