【问题标题】:How to check Observable count in rxswift?如何检查 rxswift 中的 Observable 计数?
【发布时间】:2018-07-22 08:12:58
【问题描述】:

我有这个方法返回用户可观察

  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

  }

【问题讨论】:

    标签: swift observable rx-swift


    【解决方案1】:

    我建议转移到 enum 以摆脱可选项,使其更易于管理:

    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
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多