在处理Observable.subscribe的结果时未调用OnNext

时间:2017-09-12 14:28:31

标签: swift rx-swift

我订阅了一个observable,但如果我将一次性添加到我班级的btnClick event,则永远不会调用DisposeBag块。

这是我的代码:

onNext

其中@objc class AppleMusicPlaylistManager: NSObject { let disposeBag = DisposeBag() let playlists: [MPMediaPlaylist] = [] func importAppleMusicPlaylist() { playlists.forEach { applePlaylist in applePlaylist.getItunesStoreTracks().subscribe(onNext: { tracks in // Doing things here }).addDisposableTo(disposeBag) } } } 返回getItunesStoreTracks,整个内容使用RxSwift.Observable<[SoundsMusicITunesStore]>

1 个答案:

答案 0 :(得分:1)

这一切都按预期工作。

disposeBag的当前逻辑指出,在disposeBag存活之前,观察者不会被处置掉。

在您的情况下 - AppleMusicPlaylistManager().importAppleMusicPlaylist(),您创建了一个管理器,然后在管理器解除分配时调用异步请求。因此,所有可观测量都在解除分配。

为了使其正常工作,您必须将此管理器设置为shared并使用此方法:AppleMusicPlaylistManager.shared.importAppleMusicPlaylist()或将此管理器保存到某个属性,以便不立即解除分配。