问题标签 [rx-cocoa]

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 回答
271 浏览

swift - 使用 RxSwift 的问题

我需要在用户打字时指示一些延迟状态。我正在尝试使用 RxSwift:

问题是 3 秒后,我想等待,块执行的次数与我输入的字符一样多,而不仅仅是一次具有最新值。我试图从 GitHub 示例搜索中重写代码,但它不起作用:

我究竟做错了什么?

0 投票
1 回答
1616 浏览

swift3 - Swift 3: Convert PromiseKit deferred to RxSwift

I'm currently replacing PromiseKit with RxSwift, and need to convert my deferred promise to RxSwift.

Current implementation example in PromiseKit:

Current hack-implementation in RxSwift:

Thank you in regard!

PromiseKit: https://github.com/mxcl/PromiseKit RxSwift: https://github.com/ReactiveX/RxSwift

0 投票
1 回答
919 浏览

ios - 下载图像后重新加载 UITableView 行(使用 MVVM)

在我正在编写的应用程序中,我决定使用 MVVM 模式。我正在使用 RxSwift + RxCocoa 将 ViewModels 与 Views 绑定。现在我面临一个问题,我自己找不到任何解决方案。

我有一个要在 UITableView 中显示的 ViewModel 列表。在tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)方法中,我将一个单元格出列,并将列表中的一个 ViewModel 绑定到该单元格。ViewModel 具有imageUrl变量,我使用 Kingfisher 下载此图像并将其放入该单元格中的 ImageView 中。

所以这是我现在的问题:下载完成后,我必须重新加载这一行,以便自动布局计算其正确高度。但是当我使用tableView.reloadRows(at: [indexPath], with: .none)绑定时,它会重新创建并以无限循环结束(绑定 -> 图像下载完成回调 -> 重新加载行 -> 绑定 -> ...)!

任何想法如何解决这个问题?

0 投票
1 回答
462 浏览

uitextfield - 如何使用 Rx 浏览 UITextFields(下一步/完成按钮)

如何仅使用 RxSwift + RxCocoa 使用下一步/完成键盘按钮浏览文本字段?

0 投票
2 回答
1509 浏览

ios - RxCocoa - 当有延迟时防止多个视图控制器推送

就像反应式和非反应式 iOS 项目一样,如果您有一个 UI 元素(例如,正在选择的按钮或表格视图单元格)将视图控制器推送到导航堆栈上,如果有一些滞后原因(尤其是在旧设备上)重复点击会导致重复推送,从而导致糟糕的用户体验。

通常,您可以在第一次点击后禁用该元素。

例如:

我对 RxSwift 比较陌生。我正在尝试找出一种适当的反应式方法来实现这一点,以修复我的应用程序中视图被重复推送的一些错误。

一些想法:

可以使用debouncethrottle但看起来像创可贴,不一定能解决所有情况。

我目前认为最好的方法是在预期事件发生后处理订阅。

尽管如果您想在 subscribe 块内取消订阅,编译器会抱怨在其自己的初始值中使用变量,这是有道理的。我想有解决方法,但我想知道,有没有更好的方法?也许我缺少一个反应式操作员?

尝试搜索类似的示例,但结果有限。

谢谢

编辑:也许是takeUntil运营商?

可能相关的 SO question

0 投票
1 回答
2854 浏览

swift - 如何实现串行网络调用队列然后在 RxSwift 中处理?

我正在开发一个应用程序,我想使用 RxSwift 和 RxCocoa 实现以下目标

  1. 将包含 url 的 JSON 下载到 X 个文件
  2. 下载文件1,处理文件1
  3. 下载文件2,处理文件2
  4. 下载文件3,处理文件3

... ETC

这里的关键是每个文件的处理必须在下载下一个文件之前完成。至少文件处理的顺序必须按顺序执行。如果我可以在文件 1 正在处理时开始下载文件 2,那将是很棒的,但不是必需的。

我尝试使用 SerialDispatchQueueScheduler 来完成这项工作,但由于文件大小不同,每个文件的下载在不同时间完成,因此处理代码的触发顺序与我开始下载的顺序不同。

通过使用 NSOperations 等,我可以在不使用 Rx 的情况下轻松实现这一点,但我想在这个应用程序中继续使用 Rx,因为它是我在这个应用程序的其他地方使用的。

下面我包含了一些代码片段。为了这个问题,已经添加了评论。

0 投票
3 回答
2745 浏览

swift - RxSwit - 来自可观察到的忽略错误的驱动程序

假设我有一些最初充满了一些数据的视图。比我通过网络获取数据并想用这个更新的数据更新视图。

此时我想从这个 observable 创建 Driver 来驱动 UI 元素。但是,如果 observable 出现错误,我不想做任何事情,因为视图已经有一些数据,所以我只想忽略这样的错误。asDriver() 函数想要定义发生错误时应该做什么。这样做可以吗:

?

0 投票
1 回答
123 浏览

swift - CocoaPods RxCocoa 3.6.1 构建在 Xcode 9 中失败

RxCocoa 3.6.1 版无法在 Xcode 9 中构建并显示错误消息:

0 投票
3 回答
16097 浏览

ios - tableView.rx.itemSelected 中的 RxSwift 双映射

我想从中获取对象tableView.rx.itemSelected处理对象中获取对象。这个方法返回IndexPath,所以我可以映射这个值。但是如何从索引中获取对象ViewModel

大约我期望这样的事情(但这个流程是错误的):

我在某处展示了这种可能性,但不记得了。你知道怎么做吗?

0 投票
1 回答
377 浏览

swift - RxFeedback 示例问题

为什么要retryWhen { $0.delay(1.0, scheduler: MainScheduler.instance) }在最后一步使用?如果我不使用它会怎样?