swift ReactiveCocoa combine最新

时间:2015-06-23 02:29:37

标签: swift reactive-cocoa

在obj-c中,我可以使用这种方法:

RACSignal *signUpActiveSignal = [RACSignal combineLatest:@[validUsernameSignal, validPasswordSignal]
                reduce:^id(NSNumber*usernameValid, NSNumber *passwordValid){
                  return @([usernameValid boolValue]&&[passwordValid boolValue]);
                }];

当我把它翻译成swift时,就像这样:

RACSignal.combineLatest([accountSignal, passwordSignal]) { () -> AnyObject! in
        // arguments
        return true
        }.subscribeNext { (reduceResult: AnyObject!) -> Void in
        KMLog("\(reduceResult)")
    }

我怎样才能获得参数

1 个答案:

答案 0 :(得分:6)

我无法弄清楚如何对combineLatest使用该闭包,但可以使用map。输入是RACTuple对象。您可以从输入信号中获取对象,如下所示:

RACSignal.combineLatest([accountSignal, passwordSignal]).map {
        let tuple = $0 as! RACTuple
        let account = tuple.first as! String
        let password = tuple.second as! String
        // your code here
    }

显然你会想要将你的对象转换为它们的实际类型,但我在这里只使用了Strings作为例子。请记住,您必须在map闭包结束时返回组合对象。