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

swift - “字符串”不能转换为“字符串?”

使用 ReactiveSwift,我使用了以下代码:

意思是:

  • self.alertMessageProperty.value是类型String?
  • in .on(failed:),failed是类型((Error) -> Void)?所以$0是类型 Error 并且$0.localizedDescription是类型String
  • 在一个简单的 Playground 中,将 a 分配String给一个String?变量可以正常工作,正如预期的那样。

它无法编译,我收到此错误:

我认为String可以转换为String?. 这里发生了什么?

版本:Swift 3.2 - ReactiveSwift 2.0.1

0 投票
1 回答
860 浏览

ios - 响应式 swift 中的新版本控制 NSNotificationCenter

我想知道我在swift 3.0中提到的NSNotificationCenter下面的代码行可以转换为RxSwif/RxCocoa

0 投票
1 回答
3666 浏览

swift - 如何使用 ReactiveCocoa 观察 Swift 中的属性变化

我正在用新的 ReactiveCocoa + ReactiveSwift 编写 Swift。我正在尝试使用新的 ReactiveCocoa 框架执行以下操作(在 ReactiveCocoa 2.5 中):

经过一些研究,我仍然无法弄清楚如何做到这一点。请帮忙!非常感谢!

0 投票
1 回答
704 浏览

ios - 为什么将 ReactiveSwift MutableProperty 包装在 Property 中会导致泄漏?

这是一个使用 ReactiveSwift 的 Swift 类,将 a 包装MutableProperty在 a 中,并在aProperty中添加对它的订阅:PropertyScopedDisposable

如果我给另一个类一个 type 的属性Leaker?,然后使用 设置它self.leaker = Leaker(),这会造成泄漏。通过“创建泄漏”,我的意思是它触发了泄漏工具,显示了一个标记为 的泄漏对象Malloc 32 Bytes,以及一个包含Leaker.init()调用的堆栈跟踪Leaker.wrapperProperty.getter

为什么会泄漏?我发现很难准确理解是什么导致这里分配的内存永远不会被释放。

其他一些可能有用的事实:

  • mutableProperty如果我直接订阅,这不会泄漏
  • mutableProperty如果我包装在惰性属性而不是计算属性中,这不会泄漏
  • 如果我创建一个临时的,这不会泄漏Leaker,例如let _ = Leaker()
0 投票
2 回答
2291 浏览

swift - ReactiveSwift:如何订阅 SignalProducer?

我正在尝试学习 ReactiveSwift 和 ReactiveCocoa。我可以很好地使用SignalProperty但我遇到了麻烦SignalProducer

据我了解,它SignalProducer非常适合网络请求之类的事情。我设置了我的 API 层来创建并返回一个信号提供者,调用者可以启动它。

但是我应该怎么听结果呢?

我已经尝试过这样的事情,但我得到了一个错误,所以我必须做/考虑这个错误。

这是我得到的错误:

对成员“startWithValues”的模糊引用

  1. 找到了这个候选人 (ReactiveSwift.SignalProducer< Value, NoError >)
  2. 找到了这个候选人(ReactiveSwift.SignalProducer< Never, NoError >)

编辑

我尝试更明确地帮助编译器识别正确的方法,就像这样。但错误仍然存​​在。

编辑 2

在 GitHub 支持页面获得帮助并考虑此处提供的答案后,这就是我最终得到的结果。

与我之前尝试的一个关键区别是调用者不会手动启动返回的SignalProducer. 相反,通过在内部/响应另一个信号创建它,它隐式地在链内部开始。

我之前(错误地)假设有必要提取并明确订阅SignalSignalProducer生产”的内容。

相反,我现在将SignalProducers 简单地视为响应刺激而启动的延迟工作。我可以手动订阅,SignalProvider或者我可以让另一个Signal提供该刺激。(后者在我下面更新的示例中使用。它看起来相当干净,并且比手动启动它更具 FRP 风格,这是我从我的命令式思维方式中继承下来的。)

0 投票
1 回答
411 浏览

ios - 为什么我不能在这个启用 ReactiveSwift 的网络工作流中观察事件?

我正在训练自己使用ReactiveSwift进行联网,一个很好的用例似乎是从Google Places API for iOS获取位置的照片。

流程如下:

  1. GMSPlacePhotoMetadata从谷歌地点 ID获取列表
  2. 对于每个元数据,获取一张图片
  3. 将所有图片连接为一个数组

我以我能想到的最好的 ReactiveSwift 方式编写了执行此工作流程的代码(参见下面的代码),但是当我调用我的服务时,尽管对 Google Places API 进行了所有 API 调用,但我并没有进入观察部分。我觉得我在框架中遗漏了一些非常基本的东西,并且在此过程中我失去了一些观察者,但我无法指出问题所在。任何帮助都将受到欢迎。

我的服务代码

我的观察代码

我的日志

0 投票
1 回答
175 浏览

ios - 设置间隔时,QueueScheduler 未触发

此代码不打印任何内容:

但如果我不这样做,它interval:会按预期打印一次。为什么这样?

0 投票
2 回答
1449 浏览

ios - 在观察 `Action.isExecuting` 时使用`UIRefreshControl` 时由于`Lock.UnfairLock.lock()` 而崩溃

我正在使用 aUITableView来显示分页列表,并且我正在使用 aUIRefreshControl来指示正在发生网络请求。

但是,由于某种原因self.refreshControl.beginRefreshing()/self.refreshControl.endRefreshing()导致os_unfair_lock_lock(_lock). 如果我注释掉这两行,代码就可以正常工作。

以下代码可用于重现该问题:

0 投票
2 回答
332 浏览

ios - 使用 ScopedDisposable 和 take(during: ...) 有什么区别?

我有视图控制器,它有一些信号,我想观察来自该信号的值viewDidLoad()。当 View Controller 死机时,我需要处理该信号:

是否有必要viewModel.alertSignal.take(during: self.reactive.lifetime).observeValues ...像我在代码中那样将结果添加到 ScopedDisposable 对象:composite += ...?还是打电话take(during: self.reactive.lifetime)就够了?

0 投票
2 回答
251 浏览

ios - CocoaPods 安装 ReactiveSwift/ReactiveCocoa 不正确

我正在尝试在项目中安装 ReactiveSwift/ReactiveCocoa 并且没有运气。起初,我对 Xcode 报告的关于我尝试使用 ReactiveCocoa 代码的奇怪错误感到困惑:

在此处输入图像描述

然而,进一步检查表明 Xcode 正在构建 React、ReactiveSwift 和 ReactiveCocoa 框架,但未能正确集成它们。

在此处输入图像描述

我的问题是:如何解决问题,以便 Xcode 将所有内容正确组合在一起?我在我的 Podfile 中找不到任何明显错误的地方。

其他可能相关的信息:在 macOS High Sierra 10.13.2 上运行的 Xcode 版本 9.2 (9C40b)。

知道出了什么问题吗?提前感谢任何人都可以提供的任何帮助。