Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios RxSwift subscribe将在启动时工作_Ios_Swift_Rx Swift - Fatal编程技术网

Ios RxSwift subscribe将在启动时工作

Ios RxSwift subscribe将在启动时工作,ios,swift,rx-swift,Ios,Swift,Rx Swift,我第一次使用RxSwift。 它将从我的服务器加载帖子列表。 第一次只需要运行loadPostList 但是 只需初始化模型,就可以调用nextPage 请让我知道我做错了什么 class PostNetworkModel { var nextPage:BehaviorSubject<Void> = BehaviorSubject(value: ()) var reFresh:BehaviorSubject<Void> = BehaviorSubject(

我第一次使用RxSwift。 它将从我的服务器加载帖子列表。 第一次只需要运行loadPostList 但是 只需初始化模型,就可以调用nextPage

请让我知道我做错了什么

class PostNetworkModel {
    var nextPage:BehaviorSubject<Void> = BehaviorSubject(value: ())
    var reFresh:BehaviorSubject<Void> = BehaviorSubject(value: ())
    var raiseError:BehaviorSubject<Void> = BehaviorSubject(value: ())
    var isLoadingComplete = false
    private var pageNo = BehaviorRelay(value: 1)
    var postList : BehaviorRelay<[Post]> = BehaviorRelay(value: [])
    let disposeBag = DisposeBag()
    init() {
        loadPostList()
            .bind(to: postList)
            .disposed(by: disposeBag)

        postList
            .asObservable()
            .subscribe({ ( _) in
                self.isLoadingComplete = true
            })
            .disposed(by: disposeBag)

        nextPage
            .asObservable()
            .subscribe(onNext: { [weak self] ( _) in
                print("nextPage")
                if (self?.isLoadingComplete)!{
                    self?.isLoadingComplete = false
                    self?.pageNo.accept(self!.pageNo.value + 1)
                }
            })
            .disposed(by: disposeBag)
     }
}
class PostNetworkModel{
var nextPage:BehaviorSubject=BehaviorSubject(值:())
变量刷新:BehaviorSubject=BehaviorSubject(值:())
var raiseError:BehaviorSubject=BehaviorSubject(值:())
var isLoadingComplete=false
私有变量pageNo=BehaviorRelay(值:1)
var postList:BehaviorRelay=BehaviorRelay(值:[])
设disposeBag=disposeBag()
init(){
loadPostList()
.bind(到:postList)
.处置(由:处置人)
帖子列表
.asObservable()
.subscribe({())in
self.isLoadingComplete=true
})
.处置(由:处置人)
下一页
.asObservable()
.subscribe(onNext:{[weake self](u)in)
打印(“下一页”)
如果(自我?.isLoadingComplete){
self?.isLoadingComplete=false
self?.pageNo.accept(self!.pageNo.value+1)
}
})
.处置(由:处置人)
}
}

行为主体
接受初始值作为构造函数参数,因为其规范如下:

观察者可以订阅主题以接收最后(或初始)值和所有后续通知

意思是
nextPage
将在订阅时触发下一个偶数。您可能需要将该类的所有
BehaviorSuject
更改为
PublishSubject

class PostNetworkModel{
var nextPage:PublishSubject=PublishSubject()
变量刷新:PublishSubject=PublishSubject()
var raiseError:PublishSubject=PublishSubject()
var isLoadingComplete=false
私有变量pageNo=BehaviorRelay(值:1)
var postList:PublishRelay=PublishRelay()
设disposeBag=disposeBag()
init(){
loadPostList()
.bind(到:postList)
.处置(由:处置人)
帖子列表
.asObservable()
.subscribe({())in
self.isLoadingComplete=true
})
.处置(由:处置人)
下一页
.asObservable()
.subscribe(onNext:{[weake self](u)in)
打印(“下一页”)
如果(自我?.isLoadingComplete){
self?.isLoadingComplete=false
self?.pageNo.accept(self!.pageNo.value+1)
}
})
.处置(由:处置人)
}
}

注意,我将
pageNo
保留为
BehaviorRelay
,因为这个可观察对象有一个初始值是有意义的。

BehaviorSubject
接受一个初始值作为构造函数参数,因为它的规范如下:

观察者可以订阅主题以接收最后(或初始)值和所有后续通知

意思是
nextPage
将在订阅时触发下一个偶数。您可能需要将该类的所有
BehaviorSuject
更改为
PublishSubject

class PostNetworkModel{
var nextPage:PublishSubject=PublishSubject()
变量刷新:PublishSubject=PublishSubject()
var raiseError:PublishSubject=PublishSubject()
var isLoadingComplete=false
私有变量pageNo=BehaviorRelay(值:1)
var postList:PublishRelay=PublishRelay()
设disposeBag=disposeBag()
init(){
loadPostList()
.bind(到:postList)
.处置(由:处置人)
帖子列表
.asObservable()
.subscribe({())in
self.isLoadingComplete=true
})
.处置(由:处置人)
下一页
.asObservable()
.subscribe(onNext:{[weake self](u)in)
打印(“下一页”)
如果(自我?.isLoadingComplete){
self?.isLoadingComplete=false
self?.pageNo.accept(self!.pageNo.value+1)
}
})
.处置(由:处置人)
}
}

请注意,我将
pageNo
保留为
行为规则
,因为这个可观察对象有一个初始值是有意义的。

改变的行为主体受PublishSubject影响
nextPage
在这个类以外的地方和如何使用?@MattiaC。当到达表视图的底部时,调用nextPage.onNext(())已更改行为Subject to PublishSubjectWhere and how is
nextPage
在此类之外使用?@MattiaC。当到达表视图的底部时,调用nextPage.onNext(())