问题标签 [reactive-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 回答
124 浏览

swift4 - 如何使用 rac_signalForControlEvents

如何将相同的方法“rap_signalForControlEvents”转换为最后工作的 ReactiveCocoa 版本?

方法示例

我正在尝试使用 swift 构建 Reactive Programming 一书的示例,但是当我实现相同的方法时它不起作用。

我已将 reactiveCocoa 版本更改为与本书示例相同的版本,但我认为它没有针对新的 Swift 版本进行更新。

0 投票
1 回答
616 浏览

ios - 在 ReactiveSwift 中,信号观察者仅在从主线程显式调用时发送信号

我使用 ReactiveSwift 有一段时间了,但突然遇到了一个奇怪的 bug 什么的。

我正在使用 MVVM 架构,并有一个简单的视图控制器和一个视图模型。VM 有一个类型为 的属性Signal<Void, NoError>。在虚拟机的初始化中,我向它的观察者发送一个空值。在视图控制器上viewDidLoad,我监听该信号并打印一些文本。这是视图模型:

这是视图控制器:

在这种情况下,print不会调用该语句。但是,当我通过显式定义所有工作的主线程向观察者发送值时DispatchQueue

我不知道为什么会这样。在主线程上调用视图模型本身的初始化,那么什么可能导致这种行为?提前致谢。

0 投票
1 回答
635 浏览

ios - RxSwift 无法识别按钮点击事件

我有一个UIViewController带有 3 个按钮的子类。点击“继续”按钮 3 次后,我从导航堆栈中弹出此视图控制器并推送同一类的另一个实例。但是,当我推送了这个新的视图控制器对象时,我没有收到rx.tap事件。在添加.debug()这些订阅和我print(#function)deinit()视图控制器之后,我得到以下日志:

日志

我似乎程序无法将按钮与我的视图控制器的两个实例区分开来,因此在它们被处理之前第二次订阅。

有人可以帮我解决这个问题吗?提前致谢。

编辑:

以下是我订阅按钮点击的方式:

0 投票
2 回答
788 浏览

rx-swift - 反应式 Swift 使用来自 API 的实时数据 - 需要基本示例

我是 RxSwift 的新手,我正在寻找一个基本示例,说明如何在来自后端的控制台实时数据流中进行打印。我有一个后端每 1 秒传输一些虚拟数据,我可以通过 curl 请求看到它,我希望能够在控制台中自动观察和订阅并打印出来,请帮忙!

0 投票
1 回答
58 浏览

swift - 如何转物业进入 SignalProducer?

给定

我如何numberOfSneezes.producer变成这种类型的制作人

?

我知道numberOfSneezes.producer不会发送任何错误,但sneezeNumberProducer无论如何我都需要分配它。

0 投票
4 回答
476 浏览

swift - 协议中的 Swift 元组声明

我的代码中有一个元组变量,它来自 ReactiveSwift:

如何在协议中声明该变量元组?

类似这样(不起作用):

出现语法错误:“Getter/setter can only be defined for a single variable”

谢谢!

0 投票
1 回答
361 浏览

ios - 将集合类型绑定到 ViewModel 属性

我有一个项目数组(每个项目对应一个单元格数据),我想创建一个单元格 ViewModel 数组。

当我尝试将项目映射到 MutablePropery 时,我得到Binary operator '<~' cannot be applied to operands of type 'MutableProperty<[CellViewModel]>' and '[CellViewModel]'

我应该如何更改以下代码以获得反应流?

我的意图是创建一个如下所示的结构:来自MVVM + ReactiveCocoa。我共享的代码是我的 ViewController 的 ViewModel,我尝试在启动父 ViewModel 后立即创建单元格 ViewModel。 在此处输入图像描述

0 投票
2 回答
546 浏览

ios - ReactiveSwift:使用 MutableProperty 观察托管对象的变化

我的项目具有CoreData具有 1 个根上下文和多个子上下文的数据库。我有一个ViewModel包含一个项目(NSManagedObject)。当我更改项目中的某些内容时,会在根上下文中进行持久化,然后自动合并到所有子上下文中。

我想NSFetchedResultsControllerReactiveSwiftSignals/Properties 替换,以观察项目对象的变化。

视图模型:

视图控制器:

在我在其他地方更改项目名称后,更改将传播到ViewModel子上下文(NSFetchedResultsController得到通知),但信号永远不会推送新item事件。

也许是因为NSManagedObject参考永远不会改变?我知道我可以用 观察对象中特定属性的变化producer(forKeyPath: "propertyKeyPath" ),但我不想只观察项目的一个特定属性,我想观察所有变化。

有没有办法观察所有对象属性的任何变化?

0 投票
1 回答
563 浏览

reactive-cocoa - 将 ViewModelOwners 与 ReactiveCocoa 一起使用时如何处理 DisposeBag

ViewModelOwners记录了如何使用 ReactiveCocoaCompositeDisposable

这个例子甚至是用 ReactiveCocoa 实现的。

但是,我不明白disposeBag实际是如何处理的,因为CompositeDisposable不会自动处理deinit

我正在尝试该示例并向一次性用品添加一条日志消息:

释放控制器时永远不会打印该消息。

我认为您需要手动处理袋子deinit,但关联的对象没有暴露,所以我无法disposeBag进入deinit

我想出的最好的方法是使用lifetimeReactiveCocoa,如下所示:

但这似乎有问题,例如,如果这是 a ReusableViewModelOwner,那么除了最后一个 disposeBags 之外的所有内容都已被处理,但我仍然保留它们......

所以基本上,我的问题是:你应该如何使用ViewModelOwnerswith ReactiveCocoa.CompositeDisposable

0 投票
1 回答
658 浏览

swift - 在 reactswift 中传递的观察事件

我已经多次阅读文档并需要澄清......

鉴于以下片段:

Ifsignal被触发并通知其观察者value event

1)y之前会通知观察者x(假设因为它在队列中更早地被第一次观察到)

2)由于y在处理完值后会完成,所以self应该在之后释放

问题:

哪些事件将x收到(按顺序):

  • 价值和完成度?是否保证在处理价值事件时 self 仍然活着?

  • 只完成?我怀疑是这种情况,但如果是这样,请参考一些文档。因为完成事件不会立即传播。

会为两者使用不同Scheduler的 sx并且y会对结果产生影响吗?

最后,我要介绍race吗?我对此表示怀疑,因为除非开发人员明确说明,否则 reactiveSwift 不会引入并发性。