簡體   English   中英

如何檢查rxswift中的Observable計數?

[英]How to check Observable count in rxswift?

我有這種方法返回用戶可觀察

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM