首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解rx-swift地图功能

如何理解rx-swift地图功能
EN

Stack Overflow用户
提问于 2019-05-28 18:56:01
回答 2查看 382关注 0票数 0

我的视图控制器中有一些文本文件。并使用rx-swift观察.editingDidBegin事件。

我想判断哪个文本字段发送事件。

代码语言:javascript
复制
let tags = txtFieldArray.map{($0.rx.controlEvent(.editingDidBegin), $0.tag)}
            .map{obs, tag in obs.map{tag}}
let value = Observable.merge(tags)
        value.bind {[weak self] (tags) in
            guard let strongSelf = self else { return }
            if let view = strongSelf.ipEnteryView.viewWithTag(tags) as? UITextField {
                strongSelf.viewMode.changeTextFiledBottomColor(view, true)
            }
            }.disposed(by: disposedBag)

txtFieldArray的第一个map返回一个数组,元素是元组(据我所知),第一个是controlEvent,第二个是int值。我不理解的是第二个map函数。Obs为contrlEvent类型。为什么obs.map{tag}返回一个observable。如何理解obs.map{ tag }}中的map{obs,tag}?非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2019-05-28 19:06:41

输出为:

代码语言:javascript
复制
obs.map{ tag }

,它表示

代码语言:javascript
复制
$0.rx.controlEvent(.editingDidBegin).map { $0.tag }

它将.editingDidBegin控制序列替换为该字段的标记值。

票数 0
EN

Stack Overflow用户

发布于 2019-05-28 19:23:38

obs.map { tag }返回一个Observable,因为函数的签名是:

ObservableType.map<Result>(_ transform: @escaping (Self.Element) throws -> Result) -> RxSwift.Observable<Result>

由于map返回一个Observable,因此ops.map { tag }返回一个Observable。

.map{obs, tag in obs.map{tag}}获取(ControlEvent<()>, Int)数组,遍历每个元素并将其转换为Observable<Int>

map只是一个函数,用于转换调用它的函数子类型。因此,第一个映射将X的数组转换为Y的数组,第二个映射将X的ObservableType转换为Y的可观测值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56340660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档