小编Cha*_*tte的帖子

RxSwift 与BehaviorRelay<Any?> 的两种方式绑定

我创建了一个通用变量。例如,该变量可以连接到文本字段或其他界面元素(例如开关)。所以我的变量的类型将是 Any,这样我就可以存储布尔值、字符串或其他内容。

var test: BehaviorRelay<Any?> = BehaviorRelay<Any?>(value: nil)
Run Code Online (Sandbox Code Playgroud)

然后我尝试将界面元素连接到该变量

(self.switch.rx.value <-> viewModel.test).disposed(by: self.disposeBag)
Run Code Online (Sandbox Code Playgroud)

或者

(self.textfield.rx.text <-> viewModel.test).disposed(by: self.disposeBag)
Run Code Online (Sandbox Code Playgroud)

出现此错误Cannot convert value of type 'BehaviorRelay<Any?>' to expected argument type 'BehaviorRelay<Bool>'Cannot convert value of type 'BehaviorRelay<Any?>' to expected argument type 'BehaviorRelay<String?>'

我怎样才能用 RxSwift 做到这一点?

你可以在这里找到我的 <-> 函数:

infix operator <->
func <-> <T>(property: ControlProperty<T>, variable: BehaviorRelay<T>) -> Disposable {        
    let bindToUIDisposable = variable.asObservable()
        .bind(to: property)
    let bindToVariable = property
        .subscribe(onNext: { n in
            variable.accept(n)
        }, onCompleted:  {
            bindToUIDisposable.dispose()
        }) …
Run Code Online (Sandbox Code Playgroud)

binding swift rx-swift

5
推荐指数
1
解决办法
5586
查看次数

从Java的时间戳到日期

我在使用Java创建新日期时遇到了问题.我从webservice收到一个时间戳(例如1397692800).你可以从这个在线转换器看到等于2014年4月17日.当我尝试用Java创建这个时间戳的新日期时

Date date = new Date (1397692800);
Run Code Online (Sandbox Code Playgroud)

控制台对我说,这等于周一1月17日05:14:52 CET 1970.我的代码出了什么问题?

java android timestamp date

2
推荐指数
1
解决办法
142
查看次数

标签 统计

android ×1

binding ×1

date ×1

java ×1

rx-swift ×1

swift ×1

timestamp ×1