我订阅了一个可观测的,但是如果我在我的类中把这个可丢弃的添加到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/

10-10 14:52