2

I am facing issue on debug as well as release mode,

Xcode 10.2.1

macOS Mojave 10.14 .5

swift5.09

Fatal error: Binding error to behavior relay: objectDeleted: file /Users/webwerks/Desktop/Monster/iOS/monstar_mukesh/project_name/Pods/RxCocoa/RxCocoa/Common/Observable+Bind.swift, line 90 2019-07-04 15:42:33.074374+0530 target_name[2731:1953909] Fatal error: Binding error to behavior relay: objectDeleted: file

enter image description here

Note

There was not any issue & crash on existing code on macOS High Sierra 10.13.6 , Xcode 10.1 (swift4.2)

What I suspect is, there is issue in the following code,

private func logoutAction() -> CocoaAction {
    return CocoaAction { [weak self] in
      guard let `self` = self else { return .empty() }

      let subject = PublishSubject<Void>()

      func changeRootView() {
        let authScene = AuthScene.signin(coordinator: self.sceneCoordinator)
        self.sceneCoordinator.transition(to: authScene, type: .root(animationType: .present))
          .asObservable()
          .mapTo(())
          .bind(to: subject)
          .disposed(by: self.disposeBag)
      }

      self.logoutRequestAction.execute(())
        .subscribe { changeRootView() }
        .disposed(by: self.disposeBag)

      subject
        .subscribe{
          APITokenManager.shared.removeToken()
          RealmDBManager.shared.deleteAllData()
          OneSignalManager.shared.unsubscribe()
        }
        .disposed(by: self.disposeBag)

      return subject
    }
  }
Mukesh Lokare
  • 2,159
  • 26
  • 38

1 Answers1

0

Culprit was PublishSubject object. I was deleting the all realm data by calling RealmDBManager.shared.deleteAllData() before executing the AuthScene.signin call.

What I did is,

subject
        .subscribe( onNext: { _ in
          APITokenManager.shared.removeToken()
          RealmDBManager.shared.deleteAllData()
          OneSignalManager.shared.unsubscribe()
        })
        .disposed(by: self.disposeBag)

It works like champ.

Mukesh Lokare
  • 2,159
  • 26
  • 38