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

swift - 使用 ReactiveSwift 添加数字流

通常是 ReactiveSwift 和 FRP 的新手,试图构建一个小型计算器应用程序来尝试掌握它,但我一直在寻找响应式方法来做这样的事情。如果我有一个接受一个值的函数,我如何将该值传递给一个不断应用一个函数的流,该函数接受所传递的值以及所有先前值的结果?例如,如何将整数流相加?示例代码将非常有帮助。像这样的东西

0 投票
3 回答
458 浏览

ios - 自 Xcode 8.3 更新以来,ReactiveCocoa 错误“让‘值’是私有的,不能从‘@inline(__always)’函数中引用”

我正在使用ReactiveCocoa我的 iOS 应用程序,这是我的 Podfile 的两个相关行:

由于我将 Xcode 更新到 8.3 版,我无法再编译我的代码,编译器从Pods/ReactiveSwift/Atomic.swift文件中抛出这些错误:

让 'value' 是私有的,不能从 '@inline(__always)' 函数中引用

在此处输入图像描述

我试图清理项目,并重新安装 pod ( pod install),但我仍然遇到了这个问题。关于如何解决这个问题的任何想法?

0 投票
1 回答
1190 浏览

swift3 - 简单的代码 swift 到响应式swift

人们如何转换我的代码:

和:

到 ReactiveCocoa/ReactiveSwift。我读完了。有关 Reactive 的文档,但我不明白如何在我的代码中实现 Reactive API。谁知道我需要怎么做,请告诉我。还有一个知道上一版本 ReactiveCocoa/ReactiveSwift 的优秀示例/示例/教程的人,请告诉我。

0 投票
1 回答
211 浏览

swift - 将 PromiseKit 转换为 Signal 和 SignalProducer

我正在尝试将Promise<T>PromiseKit的 a 转换为ReactiveSwift SignalProducer,但我在想出它时遇到了麻烦。有人能指出我正确的方向吗?

目前我有:

我正在尝试模仿 rxjs 的fromPromise方法。

0 投票
2 回答
1024 浏览

swift - 具有只读公共访问权限的 ReactiveSwift 可变属性

我有一个带有枚举属性的类state。这个属性的值(我ReactiveSwift.Property的意思是值)需要被其他类访问和观察,但值的变化应该是私有的。目前它以这样的方式实现:

这种模式允许我修改mutableState类文件中的属性。同时课外状态只能用于阅读和观察。

问题是是否有办法使用单个属性来实现类似的事情?也可能有人可以为相同的解决方案提出更好的模式?

0 投票
1 回答
824 浏览

swift - 从 RACSignal 迁移到 ReactiveSwift 或 RAC5

我是 Swift 的新手,这就是为什么我是 Reactive Cocoa v5 或 Reactive Swift 的新手。

以前我将 RACSignal 与 RAC 2.x 一起使用,我喜欢做这样的事情:

在这里我喜欢它取消一次性请求,我也可以通过调用dispose返回信号的方法来手动取消它。

我对 Reactive Swift 中的所有这些东西有点困惑,比如 SignalProducers 等。

请举例说明如何使用最新的 Swift/ReactiveSwift/ReactiveCocoa 版本实现相同的功能。主要要求是能够在任何我想要的地方取消请求(或处置信号),并在处置时自动取消请求

0 投票
1 回答
1910 浏览

ios - Reactive Cocoa 5 和 ReactiveSwift 网络请求处理

我试图弄清楚是否可以使用 ReactiveSwift 和 RAC5 实现适合我需要的网络请求处理。

从 RACSignal 迁移到 ReactiveSwift 或 RAC5主题下,有人告诉我它可以使用 SignalProducer 完成,但深入研究它并没有给我预期的结果

所以,我想要:
1. 每次 textField 发送请求中的文本更改(按关键字搜索)。
2.一旦用户关闭当前的ViewController,当前的请求应该会自动取消
3.一旦关键字改变,可以取消请求

这是我所拥有的

这是生产者初始化程序

注意:
1. 有时我想有一个“两个处理程序块”,它会在成功和错误时被调用,所以像隐藏加载指示器这样的事情可以在那个块下完成。

这里有几个问题/问题:
1. 一旦我关闭 VC(解除操作),observeValue 处理程序就会再调用一次。它可以通过添加来修复.skipRepeats(),但我想这只是一种解决方法,而不是一个确切的解决方案。
如果我关闭 VC 2 completed,即使我在调用 3 后立即手动调用它,我也不希望这个观察者处于活动状态send(error: error)
。如果请求仍在加载并且我关闭 VC,它不会自动处理,这对我来说看起来很奇怪。我认为一旦 viewController 失去对 signalProducer 的引用,就会自动调用 dispose 块。即使调用VCself.fetchSignalDisposable?.dispose()deinit方法也不会取消请求。它仍然完成请求和调用value导致错误访问错误崩溃的处理程序

我的个人需求是:
1. 在请求成功和失败的情况下都将调用某种“两者”块2. 关闭 VC 3
后,必须删除 textFields 文本值的所有观察者,并且不再处于活动状态。
关闭VC时必须立即取消网络请求

PS:当然,感谢所有阅读这篇巨文并花时间帮助我的人!

0 投票
2 回答
705 浏览

ios - ReactiveCocoa 5,ReactiveSwift 网络子请求处理和最佳实践

我正在尝试找到最佳实践来处理从父请求中获得的每个值的多个子请求。我正在尝试使用与此处相同的逻辑 - Reactive Cocoa 5 and ReactiveSwift network requests handling,但有一些问题。

我们拥有和需要什么:
1. 带有无限滚动处理程序 (SVPullToRefresh) 的 TableView
2. 每次调用处理程序时获取对象列表
3. 从响应中为每个对象发送“子请求”

注意:
1. 一旦 viewController 关闭(调用 deinit),所有请求(父 + 子请求)都应该被取消
2. 我需要能够随时取消父请求。这也应该取消所有子请求。

我目前拥有的

我知道我在“无限处理程序”中所做的有点像“胶带”,但我是 ReactiveSwift 的新手......

所以,如你所见,我使用 tableView 进行分页。我正在为每个页面获取对象列表。然后对于响应中的每个项目,我需要使用请求#2 获取附加信息。


流程和问题:
1.当然我想摆脱tempMutableProperty并以某种方式开始新parent request的没有某种代理
2.每个都sub-request应该是独立的,这意味着我想让value/error处理程序分别为每个调用sub-request,而不是像它等待所有 10子请求,然后调用成功处理程序并收集所有 10 个响应。此外,某些特定子请求的失败不应影响其他正在运行的子请求
3.用户可以更改他的搜索请求,而无需等待整个请求过程完成。这意味着一旦用户更改了一些参数,我将清除所有项目,我需要parent request在所有项目中取消sub-requests并重新开始这一切。
4.除了#2,有时用户可以向下滚动以获取新的项目部分。这将意味着 newparent request应该开始,但是sub-requests从之前的响应parent request应该继续工作
5.所有请求都应该在 取消self.deinit,所以这一切都应该只在 期间有效self.lifetime,但我不确定放置此参数的正确位置是什么

我不确定如果不将一次性/信号存储为 self 的属性,这一切是否可能,所以如果sub-request以某种方式存储为属性,这不是问题。


谢谢大家的帮助

0 投票
1 回答
641 浏览

swift - ReactiveSwift:最多重试n次,然后执行一些代码

考虑下面的代码

是否有一种内置方法可以重试 n 次,然后(如果所有尝试都失败)执行一些回调?

当然可以引入一个本地计数器并计算故障,.on(failed: _)然后如果计数器等于 n+1 则执行某些操作,但是还有其他方法吗?

0 投票
1 回答
440 浏览

reactive-cocoa - 在我的情况下,SignalProducer 没有使用 ReactiveSwift 启动

假设我想从 UseDefaults 读取一个值,如果失败,尝试向服务器询问它,我写了这段代码,但它不会执行:

getAuthorizationCode().start { event in case let .value(value): print(value) case let .failed(error): print(error) } 另外,如果我想执行另一个网络请求,我应该怎么做做?

任何帮助表示赞赏。