问题标签 [reactivekit]

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 投票
2 回答
541 浏览

ios - 当我使用 ReactiveKit/Bond 时,UITextField 在我调用 becomeFirstResponder 后立即辞职第一响应者

我在静态 tableviewcontroller 中有几个 UITextFields。我为每个文本字段指定了一个标签值,这样当用户在键盘上单击下一步时,我可以获得带有下一个标签的文本字段并调用 becomeFirstResponder 以便用户在文本字段之间导航。

这基本上会奏效。但是,当我使用 ReactiveKit/Bond 时,特别是当我在 viewdidload 中调用以下行(假设 lastName 是下一个文本字段)以将 UI 与模型绑定时:

下一个文本字段(lastName)将进入编辑模式几毫秒,然后键盘被关闭,文本字段不再处于编辑模式。

当我注释掉粘合线时,逻辑就会成功。我曾尝试用单向键替换双向键或调用 obserNext 但这也会导致同样的问题。

0 投票
0 回答
305 浏览

ios - 如何通过 Bond 的双向绑定来清理数据

我对 FRP 很陌生,并决定开始使用 Bond 和 ReactiveKit,因为它看起来足够轻量级,可以开始逐渐将它应用到我的应用程序和我的头脑中。

我有一个设置,我有一个视图,它有一个可观察的State,我有一个视图模型,它具有另一个类型的可观察属性State。我希望我的视图变得乏味且不了解语义,因此我希望我的视图模型能够验证状态、转换状态并将其发送回视图。

该视图包含几个文本字段和一个分段控件。当分段控件为0时,我只希望第一个文本字段可见,否则 - 两个字段。每当用户输入某些内容或点击分段控件时,都会更新可观察状态对象。这是State结构:

这是我能想到的最好的:

查看型号:

视图控制器:

基本上我有两个可观察对象,一个接收更新,另一个将转换后的值发送回视图。这个解决方案似乎引入了一个沉重的样板,我正在寻找一个更好的样板。有人有什么主意吗?

PS 其他可能派上用场的场景是当我想对用户输入(只有字母或只有数字)有一些限制时,或者我想以一种奇特的方式格式化输入。

0 投票
1 回答
285 浏览

ios - Swift iOS ReactiveKit:调用观察者导致多次触发动作?

我有一个单例类,我用它来观察一个属性并触发下一个动作。

单例类:

上述方法将通过调用触发:

注册 onPopCurrentViewController:

在我的应用程序中,BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext{}由于业务逻辑的原因,方法会被多次调用,因为这个doSomething()方法在调用时会触发多次BridgeDispatcher.sharedInstance.shouldRespondToBridgeEvent.next(body)

这是我的单例设计模式或observeNext多次调用的问题。(BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext{} )

0 投票
1 回答
64 浏览

swift - Swift Bond 框架 - 多对一关系 - 如果有任何变化,则触发单个命令

考虑以下示例:

给定一组 observables:

每次发生变化时,我都想执行此代码:

目前,配置这种关系的唯一方法是为每个 Observable 单独添加一个闭包:

目标:

我想使用与此类似的语法对其进行编程:

0 投票
1 回答
515 浏览

ios - ReactiveKit:观察一组信号,当它们都完成时做一些事情

我对反应式编程很陌生,并且在我的应用程序中使用 Bond 和 ReactiveKit。我现在遇到了一个我无法弄清楚的问题。

问题是在某个页面上我必须上传一些图片,当所有图片都上传后,我想做点什么。

这是我到目前为止的代码:

所以我有一个属性profileImages,它是 UIImage 数组的 Observable。执行时uploadImages,我想使用一个函数上传所有图像user.uploadImage,当所有上传完成后,我想调用completionHandleruploadImages函数。

此时我有一组信号,但我不知道如何观察所有信号,或者将它们组合成一个信号的方法?

0 投票
1 回答
276 浏览

swift - 如何将标准模型类/结构变成可观察的属性?

我正在使用 ReactiveKit 和他们的 Bond 扩展,我真的不知道如何做一些感觉很基础的事情。

假设我的应用中有一个用户模型。像这样的东西。

内容来自远程 API,通过使其向 Codable 确认一切正常且简单。

但是,例如,我想从模型属性到某个 UI 状态的双向绑定;这是不可能的,因为我的所有属性都没有证实BindableProtocol. 或者,如果我想观察模型属性的变化,这当然也不可能。

所以我的问题是:如何在不破坏现有用户模型和行为的情况下将模型属性转换为实际的可观察属性?例如,它仍然需要是 Codable。我是否要创建第二个ObservableUser类,然后在User模型的所有属性中设置 didSet 以将更改写入ObservableUser? 和类似的东西ObservableUser写回User?这似乎很可怕,希望不是重新开始的前进方式。

0 投票
1 回答
1268 浏览

swift - 在 Swift 的 Combine 发布器中包装异步代码

我有一个名为的类,它可以随着时间的推移QueryObserver产生多个结果,作为回调(闭包)返回。你像这样使用它:

QueryObserver实际上是 Firebase Firestore 笨拙query.addSnapshotListener功能的包装器,以防您想知道。使用现代Result类型而不是具有多个可选参数的回调。)

在一个较旧的项目中,我正在使用 ReactiveKit 并有一个扩展,可以将所有这些转换为Signal,如下所示:

不过,在一个全新的项目中,我正在使用 Combine 并试图重写它。到目前为止,我已经设法写了这个,但它不起作用。这是有道理的:observer它不会被任何东西保留,所以它会立即被释放,并且什么也没有发生。

如何使组合版本工作?如何包装现有的异步代码?我发现的唯一示例用于Future一次性回调,但随着时间的推移我正在处理多个值。

基本上我正在寻找这个的 ReactiveKit-to-Combine版本

0 投票
1 回答
1119 浏览

swift - 结合:我可以用 nil 替换错误吗?

在下面的示例中,永远不会打印“2”,因为错误是一个完成事件,会阻止发布者发送更多事件。这对我来说很清楚。

可悲的是,即使replaceError并且catch不会停止完成事件,所以管道仍然会结束。

所以我的问题是,如何用nil值替换错误并防止完成事件?基本上我想转换AnyPublisher<Int, Error>AnyPublisher<Int?, Never>,对于那些我根本不关心错误,只想继续接收未来值的情况。

使用 ReactiveKit 我有这个扩展:

而且效果很好。但是,Combine 类型使得创建这样的扩展非常困难(如果不是不可能的话?)。

0 投票
1 回答
71 浏览

ios - 通过映射两个信号返回 touple - ReactiveKit

我有两个不同的信号:

Signal<A, Error>

Signal<B, Error>

我正在尝试使用 ReactiveKit 将它们映射在一起以返回包含这两种类型的 touple 的信号: Signal<(A, B), Error>

我试过了map(),,flatMapLatest()handleEvents()无济于事。我确信有一种方法可以实现这一点,我似乎无法找到它。请注意,我不是在尝试观察信号,只是将其映射在一起,以便我可以产生两种类型的组合。

0 投票
0 回答
43 浏览

arrays - 如何基于元素包含 textfield.text 的另一个字符串数组创建一个字符串数组。不知道如何以正确的方式过滤它:(

我正在尝试在我的项目中实现 searchTextfield,我正在使用 ReactiveKit/Bond。我创建了一个函数,但不知道如何过滤我的数组元素并基于 searchTextfield.text 文本创建一个新数组。

感谢您的任何帮助!