我订阅了一个可观测的,但是如果我在我的类中把这个可丢弃的添加到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
返回aRxSwift.Observable<[SoundsMusicITunesStore]>
并且整件事都是这样使用的AppleMusicPlaylistManager().importAppleMusicPlaylist()
最佳答案
一切如期而至。
当前带有disposeBag
的逻辑指出,只有当disposeBag
活着时,才能处理可观测数据。
在您的例子中-AppleMusicPlaylistManager().importAppleMusicPlaylist()
,您创建一个管理器,然后在管理器释放时调用异步请求。因此,所有的观测值也都在释放。
为了使其正常工作,您必须将此管理器设置为shared
并使用以下方法:AppleMusicPlaylistManager.shared.importAppleMusicPlaylist()
或将此管理器保存到某个属性,以便不立即解除分配。
关于swift - 处置Observable.subscribe的结果时未调用OnNext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46179068/