3
所以,在iOS
开发,我使用ReactiveCocoa
,并与框架我能够观察多个NSObjects
并结合成一个signal
返回一个值。事情是这样的:地图多LiveData值到一个
-(RACSignal *)modelIsValidSignal {
return [RACSignal combineLatest:@[RACObserve(self,username), RACObserve(self,password), RACObserve(self, busyLoggingIn)]
reduce:^id(NSString *username, NSString *password, NSNumber *busyLoggingIn) {
return @((username.length > 0) && (password.length > 0 && busyLoggingIn.boolValue == NO));
}];
}
所以,这将返回一个boolean
要么是假性还是真性。只要其中一个对象状态发生变化,就会通知此信号,然后subscriber (Observer)
将获得该布尔值的当前值。
如何使用LiveData
来做类似的事情?最接近这样做的是MediatorLiveData
,但是,我没有看到我怎么能同时观察多个LiveData
事件,然后减少它,就像在上面的例子中一样。
'LiveData'设计用于相当简单的场景。如果你需要这样的东西,使用RxJava。 – CommonsWare
我有点担心,将RxJava加入混音中;因为我试图依靠第三方库依赖。那么,你说这是不可能的,LiveData? – Tander
“我试图依赖第三方库的依赖关系 - ”LiveData“来自一个库。所有的Android开发都依赖于库。几乎所有的现代软件开发都依赖于库。 “那么,你说这是不可能的,用LiveData?” - 没有什么“开箱即可”这样做。 'MediatorLiveData'支持N个来源,所以你可能能够做出你想要的变换。我的观点是Google已经表明RxJava是复杂的反应流动的答案。 – CommonsWare