swift - 处理 Observable.subscribe 的结果时不调用 OnNext

标签 swift rx-swift

我正在订阅一个 observable,但是如果我将一次性添加到 DisposeBag在我的课上,onNext block 永远不会被调用。

这是我的代码:

@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]>整个东西都是这样使用的AppleMusicPlaylistManager().importAppleMusicPlaylist()

最佳答案

一切都按预期工作。

disposeBag 的当前逻辑指出,在 disposeBag 处于事件状态之前,不会处理可观察对象。

在您的情况下 - AppleMusicPlaylistManager().importAppleMusicPlaylist(),您创建了一个管理器,然后调用异步请求,同时管理器正在取消分配。因此,所有可观察量也都在释放。

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

关于swift - 处理 Observable.subscribe 的结果时不调用 OnNext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46179068/

相关文章:

swift - 如何在 sprite kit 中复制一个 sprite 并让它们表现不同

ios - 优化级别影响比较枚举

swift - 如何在 RxSwift 中从 flatMapLatest 返回不同的类型?

swift - 使用 Realm add()/setValue() 链接 RxSwift 请求

swift - RxSwift + UITableViewCell 如何获取 heightForRowAt 中的单元格对象

ios - 快速读取 JSON 解析到 NSArray 时出现段错误

swift 哈内克 : cache doesn't resolve

xcode - 在 swift 中按枚举的值对对象数组进行排序

swift - 如何处理响应式(Reactive)编程更新和CollectionView

ios - 如何使用 RxSwift 强制点击 UIBarButtonItem?