问题标签 [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.
swift - 使用 RxSwift 的问题
我需要在用户打字时指示一些延迟状态。我正在尝试使用 RxSwift:
问题是 3 秒后,我想等待,块执行的次数与我输入的字符一样多,而不仅仅是一次具有最新值。我试图从 GitHub 示例搜索中重写代码,但它不起作用:
我究竟做错了什么?
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
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)
绑定时,它会重新创建并以无限循环结束(绑定 -> 图像下载完成回调 -> 重新加载行 -> 绑定 -> ...)!
任何想法如何解决这个问题?
uitextfield - 如何使用 Rx 浏览 UITextFields(下一步/完成按钮)
如何仅使用 RxSwift + RxCocoa 使用下一步/完成键盘按钮浏览文本字段?
ios - RxCocoa - 当有延迟时防止多个视图控制器推送
就像反应式和非反应式 iOS 项目一样,如果您有一个 UI 元素(例如,正在选择的按钮或表格视图单元格)将视图控制器推送到导航堆栈上,如果有一些滞后原因(尤其是在旧设备上)重复点击会导致重复推送,从而导致糟糕的用户体验。
通常,您可以在第一次点击后禁用该元素。
例如:
我对 RxSwift 比较陌生。我正在尝试找出一种适当的反应式方法来实现这一点,以修复我的应用程序中视图被重复推送的一些错误。
一些想法:
可以使用debounce
,throttle
但看起来像创可贴,不一定能解决所有情况。
我目前认为最好的方法是在预期事件发生后处理订阅。
尽管如果您想在 subscribe 块内取消订阅,编译器会抱怨在其自己的初始值中使用变量,这是有道理的。我想有解决方法,但我想知道,有没有更好的方法?也许我缺少一个反应式操作员?
尝试搜索类似的示例,但结果有限。
谢谢
编辑:也许是takeUntil
运营商?
swift - 如何实现串行网络调用队列然后在 RxSwift 中处理?
我正在开发一个应用程序,我想使用 RxSwift 和 RxCocoa 实现以下目标
- 将包含 url 的 JSON 下载到 X 个文件
- 下载文件1,处理文件1
- 下载文件2,处理文件2
- 下载文件3,处理文件3
... ETC
这里的关键是每个文件的处理必须在下载下一个文件之前完成。至少文件处理的顺序必须按顺序执行。如果我可以在文件 1 正在处理时开始下载文件 2,那将是很棒的,但不是必需的。
我尝试使用 SerialDispatchQueueScheduler 来完成这项工作,但由于文件大小不同,每个文件的下载在不同时间完成,因此处理代码的触发顺序与我开始下载的顺序不同。
通过使用 NSOperations 等,我可以在不使用 Rx 的情况下轻松实现这一点,但我想在这个应用程序中继续使用 Rx,因为它是我在这个应用程序的其他地方使用的。
下面我包含了一些代码片段。为了这个问题,已经添加了评论。
swift - RxSwit - 来自可观察到的忽略错误的驱动程序
假设我有一些最初充满了一些数据的视图。比我通过网络获取数据并想用这个更新的数据更新视图。
此时我想从这个 observable 创建 Driver 来驱动 UI 元素。但是,如果 observable 出现错误,我不想做任何事情,因为视图已经有一些数据,所以我只想忽略这样的错误。asDriver() 函数想要定义发生错误时应该做什么。这样做可以吗:
?
swift - CocoaPods RxCocoa 3.6.1 构建在 Xcode 9 中失败
RxCocoa 3.6.1 版无法在 Xcode 9 中构建并显示错误消息:
ios - tableView.rx.itemSelected 中的 RxSwift 双映射
我想从中获取对象tableView.rx.itemSelected
处理对象中获取对象。这个方法返回IndexPath
,所以我可以映射这个值。但是如何从索引中获取对象ViewModel
?
大约我期望这样的事情(但这个流程是错误的):
我在某处展示了这种可能性,但不记得了。你知道怎么做吗?
swift - RxFeedback 示例问题
为什么要retryWhen { $0.delay(1.0, scheduler: MainScheduler.instance) }
在最后一步使用?如果我不使用它会怎样?