问题标签 [combine]

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

swift - 异步下载图像时SwiftUI和Combine工作不顺畅

当我尝试使用 SwiftUI & Combine 异步下载图像时,它工作正常。然后,我尝试将其实现为动态列表,我发现只有一行(最后一行)会正确显示,其他单元格中的图像丢失。我已经用断点跟踪代码,我确信图像下载过程在其他人中是成功的,但只有最后一行会触发 @ObjectBinding 来更新图像。请检查我的示例代码,如果有任何错误,请告诉我。谢谢!

无论列表中有多少项目,每个图像都应该成功下载。

0 投票
1 回答
1182 浏览

nsoperationqueue - 使用结合框架的操作队列

随着 combine 框架的到来,是否有必要再使用操作队列了。例如,苹果在 WWDC 应用程序中几乎到处都使用操作队列。那么如果我们使用 SwiftUI 和 combine(异步编程),是否需要使用 Operation Queues?

0 投票
1 回答
2325 浏览

swift - 如何使用 Combine 遍历发布者的输出?

我正在重写我的 Hacker News 阅读器,以便更多地使用 Combine。我有两个函数,它们都返回一个AnyPublisher,其中一个从服务器获取一堆 HN 故事的 id,另一个通过它的 id 获取故事。我不确定如何遍历 的结果fetchStoryIds,使用 id 运行fetchStory并最终得到一个Story使用 Combine 的对象数组。

在开始重写之前,我使用此代码循环遍历 id 并获取故事。

0 投票
2 回答
1485 浏览

swift - 如何防止 PassthroughSubject 在并发上游期货完成之前杀死 .sink?

我有一个 PassthroughSubject,它发送 30 个整数,后跟一条完成消息。

从对象那里收到这些数字后,我生成了一个休眠一秒钟的未来,并以输入数字 * 2 完成。

我使用 .receiveOn 来确保期货同时运行,但这意味着完成消息也同时通过链传播并在所有期货完成之前结束接收器。

那里的任何 RxSwift/Combine 向导都知道我可以如何做到这一点,因此完成消息的接收会因期货完成而延迟?

这是一个实现所描述行为的游乐场:

0 投票
2 回答
3396 浏览

swift - 快速组合 .repeat

我想创建一个重复功能,使用组合在我的代码中创建一个循环。我注意到,Combine 没有通过这个伟大的 repo 重复发布者:https ://github.com/freak4pc/rxswift-to-combine-cheatsheet 。这是我编写的用于重复 2 个状态的代码。如何将其简化为更具可读性或创建自己的重复功能?

0 投票
1 回答
1028 浏览

swiftui - 将 Slider 值绑定到 EnvironmentObject 中的嵌套数组时,索引超出范围

描述:

我有一个具有以下层次结构的模型:

  • 食谱
  • ...步骤(一个数组)
  • ...当前步骤
  • ......参数(一个数组)
  • .........最低限度
  • .........最大
  • .........默认
  • .........当前

该模型运行良好。我可以添加步骤、参数,并将当前步骤设置为@EnvironmentObject被调用的recipe.

我在这里创建了一个示例项目,其中包含两个步骤和参数列表,以及三个按钮,用于在三个硬编码步骤中添加一个步骤,每个步骤包含一个 0、1 或 3 个参数的数组。

顶部列表是步骤行,每个都是填充底部列表的按钮。底部列表是参数列表,每个列表都包含一个标签和一个滑块VStack

一切正常,除非我 (a) 将滑块绑定到我的模型并且(b) 列表包含的滑块(行)比当前步骤现在拥有的更多。我得到一个index out of range error.

如果我将滑块值绑定到局部变量,则一切正常。以下是相关代码:

同样,一个工作示例是 project here

0 投票
2 回答
5049 浏览

swift - iOS13 的组合流在操作员使用调度程序后不流动

iOS13 的发布者组合流在操作员使用调度程序后似乎没有流动。

这是我的代码:

我希望输出是

但实际输出什么都不是。

如果我不使用receiveorthrottledebounceor delay。输出会很好。

是错误还是我的代码有问题?

我尝试使用 Playground(Xcode 11 beta3)。

0 投票
2 回答
2234 浏览

ios - 组合:监听内部集合变化

我有一个封装对象集合的数据管理器。我想听听那个经理的变化,以及集合对象的变化。PassthroughSubject我使用and提出了解决方案sink,但我对 Combine 还是很陌生,想知道它是否正确,是否有更好的方法来做到这一点。

0 投票
2 回答
1161 浏览

swift - Swift Combine PassThroughSubject 发出的意外事件

我目前正在使用 Combine 和 SwiftUI,并使用 MVVM 模式构建了一个原型应用程序。该应用程序使用了一个计时器,并且控制它的按钮的状态被(不雅地)绑定到使用 PassThroughSubject 的视图模型。

当按下按钮时,这应该会切换状态变量的值;this 的值被传递给视图模型的主题(使用 .send),它应该在每次按下按钮时发送一个事件。但是,似乎存在递归或同样奇怪的事情,因为多个事件被发送到主题并且运行时崩溃导致 UI 没有更新。

这有点令人费解,我不确定这是Combine 中的错误还是我错过了一些东西。任何指针将不胜感激。下面的代码 - 我知道它很乱 ;-) 我已将其缩减为看起来相关的内容,但如果您需要更多,请告诉我。

看法:

视图模型:

0 投票
1 回答
3213 浏览

swift - SwiftUI ObjectBinding 不会使用 combine 接收来自可绑定对象的 didchange 更新

我正在测试 Combine 框架并使用 BindableObject 作为通知中心,以便在 SwiftUI ContentView 中的多个视图之间传递数据。

其中一个视图是表格。我单击一行并在打印检查点中检测到该值,因此可绑定对象接收更新。

问题是,新字符串没有在 ContentView 上广播到接收端。

我是新手。

带有表格视图 .swift 的视图控制器(广播):

主要内容视图(播放目的地):

它编译、运行并打印更改,但 MyMiniView 的 PrimaryButton 没有发生更新。