ios - RxSwift toArray() 没有订阅

标签 ios swift rx-swift

当我在订阅前添加 toArray() 时,我没有收到回调。

    googleCalendarUseCase.getEventsFromCalendars(calendars: selectedCalendars).subscribe(onNext: { (event) in
        print(event.summary) //print thousands of elements
    }).addDisposableTo(disposeBag)
    googleCalendarUseCase.getEventsFromCalendars(calendars: selectedCalendars).toArray().subscribe(onNext: { (events) in
        print(events.count)  // Never gets called
    }).addDisposableTo(disposeBag)

也许问题出在函数 getEventsFromCalendar 上,但不确定如果我不执行 toArray() 为什么它会起作用:

func getEventsFromCalendars(calendars: [GoogleCalendar.Calendar], nextPageToken: String? = nil) -> Observable<GoogleCalendar.Event> {
    return Observable<GoogleCalendar.Event>.create { observer -> Disposable in
        var parameters: [String: Any] = [:]
        if let nextPageToken = nextPageToken {
            parameters["pageToken"] = nextPageToken
        }
        _ = self.oauthswift.client.get(GoogleCalendarAPI.events, parameters: parameters, success: { (data, response) in
            if let json = try? JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as? [String: AnyObject] {
                if let nextPageToken = self.nextPageToken(json: json) {
                    _ = Observable.of(Observable.from(self.getEventsFromJSON(json: json)), self.getEventsFromCalendars(calendars: calendars, nextPageToken: nextPageToken))
                        .merge().subscribe(observer)
                } else {
                    _ = Observable.from(self.getEventsFromJSON(json: json))
                }
            } else {
                observer.onError(CustomError.other)
            }}, failure: { (error) in  observer.onError(CustomError.noInet) }
        )
        return Disposables.create()
    }
}

最佳答案

使用 debug() 检查并确保您获得了 Completed 事件(没有 toArray())。 toArray() 只会在源序列完成后发出一个 Array

关于ios - RxSwift toArray() 没有订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39742899/

相关文章:

ios - 使用 5.1.1 创建 Cordova 项目

ios - WKWebView 不加载本地 html 文件

swift - 为什么我需要将属性强制转换为与该属性具有相同签名的泛型方法?

ios - RxSwift,我如何链接不同的可观察对象

swift - 等待 mergeLatest 直到 #selector 被调用

ios - 如何在按下按钮时遍历数组中的项目?

ios - iPad 在 Landscape 中启动仅接收 768x768 内的触摸

mvvm - 在哪里绑定(bind) MVVM 中的 observables?

iphone - twitter ios5 集成使用自定义登录名和密码进行自动化

ios - 使用 JSON 响应调用 swift 中的函数时出错