问题标签 [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 投票
2 回答
320 浏览

ios - RxSwift 中的 RAC tryMap 替代方案

RxSwift 中推荐的实现类 RACtryMap功能的方法是什么?

以下代码是我如何将 json 对象映射到内部响应包装类。如果响应不符合某些条件,nil将被返回,这将变成一个错误事件(tryMap 实现)。

这应该如何在 RxSwift 中实现?

更新可能的解决方案

我为 Rx-Swift 提出了以下解决方案。打开以获得更好的解决方案。

我的结论是在地图中使用 throw 来处理错误。

0 投票
5 回答
12714 浏览

swift - 是否存在不需要 Next 事件中值的 Observable 的首选类型?

我有一个 Observable 仅用于触发flatMap/ map。所以我只需要Next事件而不需要值。对于这种垃圾值,我可以使用我自己的概念,但我想知道是否有针对它的 RxSwift 约定。

这是我正在处理的问题:

在此示例中,triggeringObservable位于rx_observer库中的某些属性上,它将让我们知道username()已准备好被调用。

0 投票
3 回答
9914 浏览

swift - 忽略/过滤 nil

有可以过滤的运营商nil吗?我最接近的是这里提到的解决方案:https ://github.com/ReactiveX/RxSwift/issues/209#issuecomment-150842686

相关摘录:

但是, after .notNil(),E仍然是可选的,因此后续的链式运算符仍然认为selfwhereObserver<E>E可选的。所以我仍然需要一个额外的运算符:

我肯定错过了什么。这似乎是一个非常普遍的需求。

0 投票
0 回答
574 浏览

swift - 创建一个用户可控的 RxSwift 观察者

我正在尝试在基于 Rx 的网络代码中实现用户驱动的刷新,我当前的设计如下:

  1. 创建一个接收器,Void每次用户启动刷新操作时都会将值传递给它
  2. flatMap该接收器上的最新.Next事件Observable进入新的网络调用
  3. 将网络响应转换为新的视图模型并将其传递回视图控制器

我要挂断的部分是如何为这些事件创建一个接收器。我目前的代码如下:

现在很明显为什么我创建事件接收器的代码在这里不起作用。传递给refreshObservable'create方法的块仅在观察者订阅后才被调用,因此在此refreshSink之前不会重新分配。此外,如果多次订阅此 observable,refreshSink则将重新分配该变量。

所以我的问题是:我如何创建一个Observable可以手动下推事件的?或者,我可以在这里使用更好的设计吗?

我知道 ReactiveCocoa 有一个pipe静态方法,Signal它会做一些我正在寻找的事情,但我在 Rx API 中没有找到等价物。

0 投票
2 回答
1842 浏览

swift - RxSwift Driver gets disposed after first value

I've just started playing around with Rx and decided to try out making a simple OSX app using RxSwift.

Since my app has a login form, I've found that GithubSignup example is pretty similar to what I'm doing.

I'm, however having an issue that my Drivers get disposed after first value is emitted from them, and I can't figure out how or why. Since my code is really similar to one from the Github example, I must be overlooking something.

Here is my ViewModel:

And here is my ViewController:

Here is an example when I attach ".debug()" to credentialsEmpty driver on LoginVM:

It is getting disposed as soon as value is emitted after initial one.

0 投票
1 回答
1370 浏览

swift - 如何使用 RxSwift 处理应用程序状态

我是 RxSwift 和 RX 整个概念的新手,我想知道如何处理 RxSwift 从远程服务器获取的全局应用程序状态。

假设我需要获取 JSON 并将其解析为对象列表以在表格视图中显示它,但我还需要创建格式的地图以[{id: object}, ...]在应用程序的其他部分中使用数据。

例如:应用程序重复从服务器获取人员列表,并需要人员表视图的数据作为人员消息来显示头像和状态以及相关消息。因此视图模型需要数据,并由模型 PersonPersonViewModelMessageViewModelMessage 组成。

拥有这种结构的正确方法是:

并通过从服务器获取来调整应用程序状态:

在视图模型中:

这是正确的方法还是存在一些不同的更好的方法?我还想(将来)获取的数据保持不变。最佳做法是什么?谢谢你。

PS抱歉代码中的拼写错误,如果有的话。我只是写了它没有编译。

0 投票
1 回答
161 浏览

ios - 我可以将观察者添加到 GMSMapView() 的“缩放”属性吗?

我想在 GMSMapView 的缩放(浮动)属性上添加一个观察者。我想知道这是否可能,我该怎么做?

0 投票
4 回答
6903 浏览

ios - Rxswift - 如何显示进度条

我需要在 API 调用时显示进度条,并在 API 调用完成后将其隐藏。以下是我为填充表而编写的代码。我应该在哪里调用以显示和隐藏被调用 API 的进度?有没有RxSwift办法做到这一点?

0 投票
4 回答
9980 浏览

swift - RxSwift 解开可选的便捷功能?

目前我已经创建了一个函数unwrapOptional来安全地解开流中的可选输入。

我要存档的是创建一个方便的功能而不是使用flatMap(unwrapOptional),例如

我试图做的事情,但它永远不会编译......

0 投票
2 回答
1251 浏览

ios - RxSwift 和 CLLocation :尝试获取用户位置时崩溃

我在我的应用程序中使用 RSwift 库。我正在尝试获取用户位置以便在网络请求中发送它。要获取此位置,我需要使用 Observables,因为如果用户未授权位置,该函数必须抛出错误。

该算法是在主线程之外的另一个线程中运行的许多 Observable 的串联数组的一部分(为了不冻结 UI)。我需要在主线程中执行“获取用户位置”功能,因为如果不在主线程中执行它会崩溃并且崩溃日志是:

在上面的代码中,有geolocation helper init(这是一个单例)和获取用户位置(或错误)的方法。

我在 RXSwift 地理定位示例 ( https://github.com/ReactiveX/RxSwift/pull/429 ) 中看到了一个可以使用 Drivers 处理它的类,但我确实需要一个错误并且 Drivers 不能返回错误。

如果有人可以帮助我实现这一目标,我将不胜感激。

我已经尝试将“.observeOn(MainScheduler.instance)”添加到 2 个 observables 中,但它会冻结 UI。也许有更好的方法可以在不冻结 UI 的情况下执行此操作。

谢谢