问题标签 [rx-swift]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4250 浏览

ios - RxSwift - 当 UITextField 以编程方式更新时,UILabel 字段未更新

我只是在学习 RxSwift 并且有一个简单的例子,我不确定它为什么不起作用。我有一个文本字段和一个标签字段。每当文本字段更改时,我都希望更新标签字段。如果我在文本字段中输入,一切都会按预期进行。如果我以编程方式设置文本字段,例如当我按下按钮并显式设置文本字段时,标签字段不会更新。

如何让标签字段更新?我看过很多例子,但似乎找不到一个能回答这个问题的例子。

0 投票
2 回答
916 浏览

ios - RX 块的领域通知

我想隐藏我的 Realm 实现,而不是继续工作,RLMNotificationBlock我想使用 RXSwift。下面是我的方法现在的样子(RLMNotificationBlock是一个接受 String 和 的块RLMRealm):

但我想切换到更具反应性的观察者模式方式。我查看了 RxSwift 文档和源代码rx_clickedButtonAtIndex,但我无法弄清楚我应该如何将所有这些东西放在一起。我想我最后的代码看起来像:

我是 RXSwift 新手,只知道基础知识。任何帮助将不胜感激。

0 投票
1 回答
5415 浏览

swift - rxswift 错误处理问题

我的视图模型中有一个BehaviorSubject名字createObservable。我的视图控制器订阅它。

saveObject()在视图模型中也有一个名为的函数。如果我单击导航栏右侧的项目,它将被发射。并且有一个错误将发送给createObservable' 观察者。

问题是如果发生错误,createObservable 将被关闭,所以我以后不会收到任何Next事件。我尝试使用retry(),但似乎会导致死锁,视图控制器无法再响应任何触摸事件。那么有人可以告诉我如何解决这个问题吗?非常感谢

0 投票
2 回答
7715 浏览

swift - RxSwift 将 UITextView 的文本映射和绑定到自定义对象的文本字段的方法?

我知道我可以执行以下操作来将自定义对象的注释文本字段的更改映射到 UITextView。

如何使用相同的模式进行反向操作?模式是 notesTextView.rx_text,将其映射到当前笔记的文本。我知道如何做以下感觉非 RxSwift-y 的事情:

IOW,看来我应该能够将 UITextView(又名 notesTextView)、映射并将更改绑定到当前笔记中。当前注释返回一个带有文本字符串字段的注释的变量。

0 投票
1 回答
2461 浏览

ios - 如何将 UIButton 的 rx_tap 直接转换为网络请求,而不在嵌套订阅中发送请求?

假设我有一个 UIButton loginButton,我想在点击按钮时发送一个网络请求,代码如下:

在这种情况下,即使网络请求发生错误,我也可以通过点击按钮重新发送请求。

虽然代码运行得很好,但由于嵌套订阅,我认为它有点难看。我尝试了flatMap扁平化订阅的方法:

似乎上面的两个片段具有不同的逻辑。后一种订阅仅在没有错误发生时才有效,就像正常订阅一样,而不是每次点击按钮时都订阅网络请求。

有什么办法可以使正式的片段变平?


添加了一段嵌套订阅:


可以使用以下代码捕获错误:

如有必要,我还需要取消网络请求。如果我在上面的代码段中手动处理disposable,订阅将被处理,我无法再次发送请求。

0 投票
2 回答
8492 浏览

ios - 使用 RxSwift,如何根据有效文本启用 UIButton?

在 RxSwift/RxCocoa 2.0.0- beta 3 中,我有一个 ViewModel:

我已经将 someString 绑定到 ViewController 中的文本字段。

每当 someString (或者如果这是更好的方法,可能是文本字段)发生变化时,我希望根据 someString 是否有效启用一个按钮。

我尝试使用“Observable< Bool >”,但开始走另一条路。我可以在 ViewController 中执行此操作:

难道没有比 isValidSomeString(text) 方法更简洁的另一种方法吗?我们已经通过 isValidLogin 取得了不错的成功,它返回了使用 combineLatest 的 Observable< Bool >。

0 投票
2 回答
574 浏览

swift - 组合未知数量的 Observable

我正在使用 RxSwift。我有一组文本字段,取决于哪个 UI 可见;它可以在数组中有 1、3 或 4 个文本字段。

遍历数组,我为它们中的每一个创建信号,将其映射到一个布尔值,指示该字段是否有效。

通常,要组合多个信号,我会使用combineLatestwhich has multiple variables 来接受不同数量的参数,如果我有三个信号,通常看起来像这样

当组合的信号数量未知时,有没有办法组合信号?

或者,有没有办法编写一个具有可变数量的通用参数的函数?我认为这将是编写一个函数来组合多个信号而不知道有多少的起点。

0 投票
2 回答
13345 浏览

swift - RxSwift:基于文本字段的启用/禁用按钮不为空

我必须使用 RxSwift 根据两个文本字段上的字符数启用一个按钮

最后我通过这样做来完成,但我不确定它是否是最好的方法:

编辑最终版本:

0 投票
1 回答
329 浏览

swift - 如何覆盖 Observable为了测试?

我们正在使用 Swift 2.x(最新)并希望对我们的代码进行 BDD(单元测试)。顺便说一句,我们也在使用RxSwift。我们的覆盖方法不会在我们的自定义测试存根中被调用。我们的代码:

为了测试,我们有这个测试代码:

我们希望返回 Observable< T > 并让 StubSomethingAPI 成功覆盖它以进行测试,而不是 fetchSomething 返回 Observable< String >。我们怎么能做到这一点?

0 投票
0 回答
220 浏览

swift - RxSwift - 通过 HTTP 获取未确定的资源

我有未确定的资源需要从服务器获取。我试图通过使用repeatElement()concat()这样的运算符来实现这一点:

不幸的是,repeatElement它只会发出一个项目而不等待旧项目被处理。我认为原因是 Alamofire 在私有串行队列中执行。但是,我无法弄清楚如何解决这个问题。

我在我的 Android 项目中使用了从这里获得灵感的策略。一切正常,因为 Retrofit 以同步方式初始化 HTTP 请求。