问题标签 [reactive-cocoa-4]

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

objective-c - ReactiveCocoa:创建一个在观察者上应用地图的信号

据我了解,RACSubjectReactiveCocoa 4 的等价物是Observer类。我希望将信号和观察者链接在一起,以便信号发送事件,将映射操作应用于发送给观察者的事件。在 Obj-C 中,它看起来像这样:

现在,当有人将一个值推送到 上someAction时,someSignal将触发一个包含派生值的事件。如何在 Swift 中实现相同的效果?

到目前为止我能做的是这样的:

这看起来像一个糟糕的解决方案,因为

  1. internalSignal应该是私有的,但需要声明为公共的,以便将其与 Signal 的管道相匹配
  2. someSignal因此,每次需要时都会计算它,即使相同的信号可以一遍又一遍地重复使用。也不能声明为let常量。
0 投票
1 回答
173 浏览

ios - RAC MutableProperty Producer 不向订阅者发送事件

我正在使用 RAC4 开发一个应用程序,它从服务器获取城市对象列表并将它们作为 JSON 返回。我通过将每个城市及其适当的属性存储为 City 对象来处理响应。然后,我将每个 City 映射到 CityViewModel 类型,并将 [CityViewModel] 类型的数组存储为 MutableProperty。从这里开始,每个城市都被归档到一个 tableViewCell 中,并在单元格内使用名称和下载进度条显示。点击时,单元格会触发另一个服务器请求,使用城市 nid(城市 ID)作为参数来下载包含图像等的大型 .zip 文件。

这里的目标是通过实时更新进度来为进度条设置动画。点击时,单元downloadCityData(nid: Int)格调用启动一切的函数。

问题是,虽然城市的属性正在更新,但城市并没有通知它的侦听器对象MutableProperty<[CityViewModel]>之外的任何变化。DataViewModel(在这种情况下是DetailViewController

视图控制器:

视图模型:

数据管理器:

城市景观模型:

城市:

0 投票
1 回答
339 浏览

swift - Reactivecocoa:等待几个firebase请求完成(swift)

我对我的 Firebase 数据库有几个请求,这些请求包含在这样的 signalProducer 中:

我希望能够同时调用其中的几个,然后等待所有人完成后再做某事。

Reactivecocoa 有办法解决这个问题吗?还是我与 signalProducer 的方向错误?

0 投票
0 回答
236 浏览

swift - 使用 Reactive Cocoa 的单选按钮逻辑并避免死锁

我的目标是使用 ReactiveCocoa 实现单选按钮。这意味着我有一组子视图模型,一次只能有一个处于选定状态。我也希望能够快速切换到multi-select我想要的时间,但我的问题是single-select. 当我尝试清除先前选择的项目时,我遇到了死锁。下面的代码将给出以下错误:

我不确定我是否只是把这一切都弄错了。请帮忙。

代码示例:

更新 1

所以我通过提出一些关于我的视图模型对象图如何变化的规则来解决这个问题:

1) 有两组 observables,一组表示传入事件,另一组是表示 viewModel 状态的状态属性;可以读取或绑定到的状态。

2) 只能在“观察事件”时更改状态属性,而不能在观察属性时进行。这意味着一个状态属性不应该改变自己或另一个状态属性并观察变化。

3) 传入事件不能启动其他事件,即每个堆栈/运行循环循环一个事件

代码现在如下所示:

当对象图关系变得更加复杂时,这种模式感觉会让事情变得简单……也许吧。我现在可能会使用这个,但请建议任何替代模式甚至替代库到 ReactiveCocoa。

0 投票
1 回答
1076 浏览

ios - 使用 ReactiveCocoa (4.2.1) 和 Swift 进行异步图像加载

我是第一次在 Swift 中使用ReactiveCocoa的初学者。我正在构建一个显示电影列表的应用程序,并且我正在使用 MVVM 模式。我的 ViewModel 看起来像这样:

我想像这样在 UITableView 中配置我的单元格:

这是 Reactive Cocoa 的正确方法吗?我是否需要将 Title 和 description 声明为 Mutable 或只是 image (唯一一个改变)。我想我可以使用绑定,但我不确定如何进行。

0 投票
1 回答
235 浏览

swift - 反应性可可尝试图返回类型

我想在 SignalProducerType 上创建扩展,如下所示。

XError 定义为 ErrorType

但这不会编译并且错误是。

'attemptMap' 产生'SignalProducer',而不是预期的上下文结果类型'Result<[String : AnyObject], XError>'(又名'Result, XError>')

0 投票
1 回答
223 浏览

swift - ReactiveCocoa-如何避免在collectionView的单元格中多次订阅信号

当我重新加载数据时,这种方式将再次实现,并且信号将被多次订阅,我该如何解决它并确保只订阅一次?

0 投票
0 回答
165 浏览

ios - ReactiveCocoa Swift 崩溃

我的应用程序在 Hockeyapp 中有一个奇怪的崩溃

我无法重现它。崩溃也发生在吸气剂上,这不是很奇怪吗?或者我想我错过了一些东西......我不知道要看起来确切

如果您需要更多信息,请告诉我。如果您有任何线索,请不要犹豫。

谢谢你的帮助。

编辑1:

这是使用 balancesInfo 的信号生成器:

这些代码行在 balancesInteractor init 中。

编辑2:

这是创建 balanceInfo 的代码。

0 投票
1 回答
1221 浏览

ios - ReactiveCocoa 4 - 延迟和过滤信号事件

我正在使用 ReactiveCocoa 4 实现搜索文本字段,并且只想在 X 时间内没有输入文本后才点击搜索 API。我以前通过取消先前计划并在 textDidChange 委托方法中触发“executeSearch”选择器来完成此操作。这确保了每次我键入时,任何以前安排的“executeSearch”选择器都会被取消,并安排一个新的选择器在 X 秒内触发。

我现在想做同样的行为,但是来自绑定到我的输入文本的信号生成器。我当前的实现很接近,但不一样。此行为仅将文本输入事件限制为仅每 0.5 秒触发一次,而不是取消前一个事件。

我很难筛选 ReactiveCocoa 4 文档以了解我应该使用哪些信号函数!谢谢!

0 投票
1 回答
76 浏览

ios - 如何在项目中更改新版本的 RAC(ReactiveCocoa)?

当我打开我在 iOS 10 发布之前构建的 iOS 项目时,我发现它有一个关于 ReactiveCocoa 的错误,因为 swift 的版本。我尝试使用Github提供的方法,但似乎失败了。当我尝试转换为当前的 swift 时,至少有 18 个错误。