swift - 如何检查 rxswift 中的 Observable 计数?

标签 swift observable rx-swift

我有这个方法返回 User observable

  internal func getUser() -> Observable<User> {
    let result = withRealm("getting user") { realm -> Observable<User> in
      let realm = try Realm()
      let user = realm.objects(User.self).first
      return Observable.from(optional: user)
    }
    return result ?? .empty()
  }

现在我想要另一种方法,如果用户已登录,它会返回我,将如何完成?

  private var _isLoggedIn: Observable<User> {

    return getUser().count > 0 //error

  }

最佳答案

我建议转向枚举以摆脱可选项,使其更易于管理:

enum LoginState {
  case loggedIn(user: User)
  case loggedOut
}

internal func getLoginState() -> Observable<LoginState> {
  let user = withRealm("getting user") { realm -> User? in
    let realm = try Realm()
    return realm.objects(User.self).first
  }
  if let user = user {
    return Observable.just(.loggedIn(user))
  } else {
    return Observable.just(.loggedOut)
  }
}

private var _isLoggedIn: Observable<Bool> {
  return getLoginState().map {
    switch $0 {
    case .loggedIn: return true
    case .loggedOut: return false
    }
  }
}

关于swift - 如何检查 rxswift 中的 Observable 计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51463206/

相关文章:

r - 具有动态文本的 ShinyApp 出现在多个 UI 元素的任何更改上

ios - 结合使用 RxSwift 为同一对象获取不同属性的 2 个 API 调用的结果

swift - 防止 Observabe.error 完成并快速处理

swift - 如何使用发布主题来观察变量的值?

ios - 键盘出现了日期选择器

ios - UiView.animateWithDuration 不是动画 Swift

javascript - 如何从 Angular 中的 BehaviouralSubject 中提取值

javascript - 当我误用Interval Observable时如何释放内存?

ios - 运行 AVCaptureDevice.requestAccess 阻塞

ios - Swift - 在 Collection View 的其余部分后面发送标题 View