【问题标题】:swift ReactiveCocoa combineLatestswift ReactiveCocoa combine最新
【发布时间】:2015-06-23 02:29:36
【问题描述】:

在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)")
    }

如何获取参数

【问题讨论】:

  • 哪些参数?请详细说明您的问题
  • 在swift中你使用旧的RAC2还是swift集成开发分支?

标签: swift reactive-cocoa


【解决方案1】:

我无法弄清楚如何将闭包用于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
    }

显然,您希望将对象转换为它们的实际类型,但我只是在这里使用字符串作为示例。请记住,您必须在 map 闭包的末尾返回组合对象。

【讨论】:

  • 我使用这个方法并且这个方法没有被调用 RACSignal.combineLatest([phoneNumEdit.rac_textSignal(), passportEdit.rac_textSignal()]).map { let tuple = $0 as! RACTuple 让 account = tuple.first as!字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
相关资源
最近更新 更多