问题标签 [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 投票
2 回答
1592 浏览

swift - 是否可以在 SwiftUI 中提供服务并将数据推送到视图并更新 UI?

我有一个服务文件,它获取数据并将其发送到后端。是否可以将推送数据从服务推送到视图并让 UI 像 @State 一样获取更改(不像全局变量)。

@EnviornmentObject 不工作只读全局变量不工作,因为不通知 UI

主页视图:

0 投票
2 回答
1808 浏览

swift - 'Publishers.Once' 的替代方案是什么?

新的 Xcode 11 beta 4 已经Publishers.Once从 Combine 框架中移除了 struct。什么是替代方案?

Just似乎是可能的候选者,但是,它不能用于在返回类型AnyPublisher<Bool, Error>作为关联Failure类型的方法中返回发布者Just is Never

例如在下面的方法中,我可以返回 aPublishers.Once因为关联的Failure类型不是Never

但是现在当我将它改回时,Just我收到一个编译错误,抱怨Just无法返回,因为该方法应该返回具有关联Failure类型的发布者。

是否有任何替代方案Publishers.Once也可以具有相关的故障类型?

0 投票
1 回答
5746 浏览

swiftui - SwiftUI @Binding 不刷新视图

我有一个简单的主/详细界面,其中详细视图修改数组中的项目。使用下面的方法,模型会正确更新,但 SwiftUI 不会刷新视图以反映更改。

模型:

显示 ProduceItems 列表的主视图(ItemStore 被插入到 SceneDelegate 中的环境中):

详细视图,可让您更改项目的库存值:

在 ItemDetail 视图中点击步进器会修改商店中的项目,但步进器的文本不会更改。导航回列表确认模型已更改。此外,我确认商店致电willChange.send()其出版商。我会假设send()调用会更新环境中的 ItemStore,并且@Binding应该将更改通知详细视图的属性并刷新显示(但事实并非如此)。

我尝试更改 ItemDetail 的 item 属性以使用@State

在这种情况下,模型是在使用步进器时更新的,并且视图被刷新,显示更新的库存。谁能解释为什么使用该@Binding属性不会刷新界面,但本地@State属性会?

0 投票
1 回答
8279 浏览

swiftui - 'Bool' 不可转换为 'Binding' 在 SwiftUI 中

我有一个SwiftUI正在开发的原生 Watch 应用程序。我有一个Combine允许我存储 `\userDefaults 的基础类,其中一个是简单的切换。

SwiftUI我收到Bool不可转换为的错误消息Binding<Bool>

我不明白为什么这会收到消息,因为代码是@ObjectBinding,不应该按照Binding<Bool>定义吗?如果不是,我该如何正确解决这个问题?

0 投票
4 回答
10779 浏览

swiftui - 如何将数据从子视图传递到父视图到 SwiftUI 中的另一个子视图?

正如标题所示,我试图通过父视图(P)将数据从一个子视图(A)传递到另一个子视图(B)。

父视图如下所示:

哪里childViewA得到一个CGRect需要的childViewB

childViewA看起来像这样:

我如何传递rectFramechildViewB? 尽管在和中都打印了正确的值,但CGRect.zero到目前为止我尝试过的所有内容都会返回。childViewBparentViewchildViewA

为了尝试将值传递给childViewB,我parentView这样重写:

具有childViewB以下结构:

但这只是CGRect.zero每次打印。

我最近尝试过@ObjectBinding,但我一直在努力,所以如果有人可以帮助我解决这个具体的例子,我将非常感激。

0 投票
1 回答
117 浏览

swift - Apple Combine 的 PassthroughSubject 未编译

我有一个获取用户当前位置的类,我希望能够将最近获取CLLocation的或 anError传递给SwiftUI View.

下面是负责获取位置的类:

我收到以下编译错误:Type 'LocationProvider' does not conform to protocol 'BindableObject'当我Error用作失败类型时。但是,如果我更改ErrorNever,则文件编译成功。

我需要更改什么才能通过 aCLLocation或 an Error

0 投票
1 回答
6413 浏览

ios - 将一个发布者合并为另一个发布者

我使用一个 OAuth 框架,它异步创建经过身份验证的请求,如下所示:

我试图让我的 OAuth 框架使用组合,所以我知道有一个发布者版本的makeAuthenticatedRequest方法,即:

我正在尝试使用它来替换上面的调用站点,如下所示:

如上所述,问题在于将发布者的结果转变为新的发布者。我该怎么做呢?

0 投票
1 回答
4772 浏览

swift - SwiftUI 中来自 BindableObject 的去抖动方法调用

我是 Swift 的新手,对 SwiftUI 更是如此。我开始创建一个小的基本项目。我使用 Github API 来获取存储库列表。

所以我创建了一个“搜索栏”,因为 SwiftUI 没有 SearchBar 组件。每次更改我的 Textfield 内容时,我都想执行 fetch 操作。

我不希望经常调用 fetch 方法。我决定去抖动它。我面临一个问题,我找不到/理解示例。

我试图实现一个去抖解决方案,但它不起作用,我的应用程序崩溃了。

这是我的 BindableObject

这是我的观点

我尝试使用 Timer 并每 8 秒进行一次调度和操作,但这种方法会导致我的应用程序崩溃。

此外,我真的不知道用“@objc”注释声明一个函数是否是一个好习惯......

有人可以帮我实现一种正确的方法来消除 BindableObject 中的方法吗?

先感谢您 :)

0 投票
4 回答
6623 浏览

swiftui - Xcode 11 中 Swift Combine.framework 的可选链接

我们的应用程序支持 iOS 11 及更高版本。在 iOS 13 中,我们使用SwiftUI+Combine

我们用相应的检查或包装导入SwiftUI或框架。如果我们在 iOS 12 下从 Xcode 11 运行我们的应用程序,则会出现错误Combine#if canImport(SwiftUI)#if canImport(Combine)dyld: Library not loaded: /System/Library/Frameworks/Combine.framework/Combine

我们通过可选链接解决了 SwiftUI 的相同问题。

在此处输入图像描述

但是我们不能为组合做同样的事情,因为它甚至不能被选择用于链接

在此处输入图像描述

0 投票
4 回答
15814 浏览

swift - 使用 Swift Combine 创建一个 Timer Publisher

我一直在观看Data Flow Through SwiftUI WWDC talk。他们有一张带有示例代码的幻灯片,其中他们使用连接到 SwiftUI 视图的 Timer 发布者,并随时间更新 UI。

我正在处理一些我想做完全相同的事情的代码,但无法弄清楚这PodcastPlayer.currentTimePublisher是如何实现的,然后连接到 UI 结构。我也看过所有关于Combine 的视频。

我怎样才能做到这一点?

示例代码: