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

swift - 在 ReactiveSwift 中同步组合属性

我正在考虑使用我自己的自定义信号框架将项目转换为使用 ReactiveSwift,但有一个基本问题我从未弄清楚如何在 ReactiveSwift 中解决:

作为一个简化的示例,假设您有两个可变属性:

然后,我们派生一个结合两者的属性来实现我们的逻辑:

稍后,我们收到一些信息,导致我们同时更新两者的ab

现在的问题是它c会通知它的听众它有这些值3 -> 5 -> 7。5 完全是虚假的,并不代表有效状态,因为我们从不想要一个a等于 3 和b等于 2 的状态。

有没有解决的办法?一种抑制更新的方法,Property同时将其所有依赖项更新为新状态,并且仅在完成后才允许更新?

0 投票
1 回答
87 浏览

swift - 反应式 Cocoa MVVM 初始化

所以我对反应式 Swift/Cocoa 和 MVVM 的概念相当陌生。我想知道如果我在错误的地方初始化了 ViewModel。

模型

视图模型

带有插座的 UserSlide 视图

引用 ViewModel 并将其绑定到 UserSlide 视图中的 UILabel 的视图控制器

我不断收到的错误是“在我在 createSlides() 函数的 ViewController 中引用的 UserViewModel 上,在隐式展开可选值时意外发现 nil”。

我基本上是在尝试创建一个具有两个视图的 PageController,其中一个具有我需要绑定的 UITextField 以便每当用户更改值并滑动到第二个视图时,第二个视图上显示的数据最多日期。

我试过了:

1) 将 ViewModel 设置为 optional(?) 但不幸的是,它必须被解包。

2) 在 UserSlide 视图中初始化 ViewModel 而不是 ViewController。ViewModel 仍然为零。

3) 在 ViewController 中初始化 UILabel 并以这种方式绑定 ViewModel。同样的结果,ViewModel 为 nil。

任何建议将不胜感激!:)

0 投票
1 回答
398 浏览

swift - 使用 Reactive Swift 将视图模型与视图绑定

我最近一直在关注响应式 swift 以实现它的功能。这是当前可用的游乐场信息。

https://github.com/ReactiveCocoa/ReactiveSwift/blob/master/ReactiveSwift-UIExamples.playground/Pages/ValidatingProperty.xcplaygroundpage/Contents.swift

我面临的问题是如何将视图模型与 UI 元素连接以监视它们的值。

我尝试的是用两个文本字段和一个按钮来模拟一个简单的登录屏幕。我的目标是从这两个文本字段中监视 i/p,并且按钮状态将基于此更改。

这是视图模型

这是视图控制器

当我尝试按照操场的代码 {code} viewModel.email <~ formView.emailField.reactive .continuousTextValues.skipNil(){code} 进入我的示例代码时,它给了我一个错误,指出“UITextField?”类型的值 没有成员“反应”。我添加了可用的辅助函数,emailField 没有响应式类别,反之亦然。

0 投票
2 回答
786 浏览

ios - 最新的 ReactiveCocoa Carthage 出错:没有这样的模块“结果”

我正在将我的项目更新到 Swift 5 Xcode 10.3。

现在使用最新的 ReactiveCocoa 10.0.0 之前的 Swift 版本一切正常

已经尝试过:

  1. 删除和更新所有迦太基
  2. 删除 derivedData 文件夹,清理并构建

在此处输入图像描述

0 投票
1 回答
75 浏览

swift - 为什么没有调用observeValues 块?

尝试在我的项目中使用 ReativeSwift,但有些东西表现不佳,我检查了很多次,无法找出问题所在。一切都是正确的,只是没有调用。

0 投票
1 回答
444 浏览

ios - 在文本字段中输入验证电话号码的启用/禁用按钮

作为一个整体,我对 ReactiveSwift 和 MVVM 非常陌生。我正在尝试验证输入到文本字段中的电话号码并根据验证结果启用/禁用按钮。

在应用程序中,有一个文本字段和一个UIButton名为提交的按钮。对于电话号码验证,我使用了一个名为[PhoneNumberKit][1]. 它还提供了一个UITextField格式化用户输入的子类。

我将一个看起来像这样的解决方案混合在一起。

这可以完成工作,但不是很优雅。此外,用户输入和 UI 更改之间存在显着滞后。

另一件事是我上面的解决方案不符合 MVVM。我又试了一次。

当我将validatePhoneNumber函数的结果分配给isPhoneNumberValid属性时,初始化程序中出现以下错误。

无法将“SignalProducer”类型的值分配给“MutableProperty”类型

我不知道如何将电话号码验证部分与提交按钮的isEnabled属性和点击操作正确连接。

演示项目

0 投票
0 回答
82 浏览

xcode - 使用 ReactiveSwift 进行调试会导致 $__lldb_injected_self

所以,我已经使用 ReactiveSwift 很长时间了。大多数时候,当我使用时,po我能够看到实例/本地/全局变量的值。但是有时调用堆栈太深,调用po会失败。

附上所述失败场景的截图。 在此处输入图像描述

0 投票
2 回答
1476 浏览

swift - 结合 2 个 PublishSubject 并使用 Observable.combineLatest 发射

我的服务中有 2 个单独的数据集合。

FeaturedStandard内容。

我有 2 个 api 调用来返回这些项目。它们可以单独使用,但是当我想获取两组数据,根据条件提供一些丰富然后将它们返回给消费者时,我也有用例。

我希望我能做这样的事情:

在我的应用程序的其他地方,我希望我能做类似的事情

然后无论何时调用contentSvc.fetchFeaturedContentor ,上面的订阅者都会获取新数据。contentSvc.fetchStandardContentcontentSvc.content

相反content,它似乎没有发出任何值。

0 投票
1 回答
144 浏览

ios - 如何创建日期计划?

我正在尝试创建一个日期调度程序来观察某些事件。但它不起作用。我已经看过了

协议日期调度器

并且据说在某些方法协议 DateScheduler中将currentDate执行操作。我在 10 秒后尝试这样做。下面是我的自定义计划的示例。

}

然后我创建绑定来观察事件

我正在做AppDelegateObserverSchedularsignalSchedular是全局属性。请向我解释如何调用所有方法DateScheduler

0 投票
1 回答
766 浏览

ios - ReactiveSwift 中 flatmap 策略之间的差异

从响应式 swift 的文档中,我可以了解Flattening. 可以在此处找到其中的示例。在该部分中,Flattening event streams所有内容都已完美讨论。

我很困惑flatmap。根据文档,它Maps each event from self to a new producer, then flattens the resulting producers according to strategy - concat/merge/latest. 所以,应该和flattening我猜的差不多。

但是,我无法产生类似的行为。例如,考虑以下代码段。如果我改变扁平化策略concat/merge/latest,输出不会改变。

输出:

任何人都可以清除这个吗?

此外,是否可以提供任何示例来flatmap区分 的效果merge, concat, latest