Swift OnNext在处理Observable.subscribe的结果时未调用
我订阅了一个可观察的,但是如果我在类中将一次性添加到Swift OnNext在处理Observable.subscribe的结果时未调用,swift,rx-swift,Swift,Rx Swift,我订阅了一个可观察的,但是如果我在类中将一次性添加到DisposeBag,则永远不会调用onNext块 这是我的密码: @objc class AppleMusicPlaylistManager: NSObject { let disposeBag = DisposeBag() let playlists: [MPMediaPlaylist] = [] func importAppleMusicPlaylist() { playlists.forEac
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
,整个过程都是这样使用的applemusicplaylmanager().importablemusicplaylist()
一切正常
disposeBag
的当前逻辑指出,在disposeBag
处于活动状态之前,不会处理可观察对象
在您的示例中-applemusicplaylimager().importaplemusicplaylist()
,创建一个管理器,然后在管理器解除分配时调用异步请求。因此,所有的可观察对象也都在释放
要使其正常工作,您必须将此管理器设置为共享,并使用以下方法:
applemusicplaylmanager.shared.importalemusiclaylist()
或将此管理器保存到某个属性,以便不立即解除分配。由于您的订阅返回一个可处置的只需将其分配给某个变量,然后在以后当您的对象获得deinit
@Lamar时,根据我对RxSwift的理解,这正是DisposeBag
所做的。我是不是遗漏了什么?