我有这个方法返回 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/