问题标签 [grdbcombine]

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 投票
0 回答
89 浏览

swift - 使用 GRDBCombine 获取唯一项并使用 SwiftUI 将它们显示在列表中

我在https://github.com/EricG-Personal/grdb_test.git有一个示例测试项目

在 ContentView.swift 中,我目前有一个显示数据库中所有项目的列表。

在此之下,我想要另一个列表,显示测试表中所有唯一的“名称”。

我迷失在 GRBD、Combine 和 SwiftUI 之间的详细信息中,并且不确定在使用 GRBDCombine 时为第二个列表提供数据库所需数据的代码是什么样的。

0 投票
1 回答
1593 浏览

swift - 如何从两个发布者 A 和 B 创建一个 Swift Combine 发布者,其中发布者 B 使用来自发布者 A 的值?

我想创建一个 Swift Combine 发布者,它可以实现以下目标:

  • 发布者应该由默认值(一个Swift 包)的更改或GRDB sqlite 数据库值的更改(使用GRDBCombine)触发。UserDefaults
  • 从DefaultsUserDefaults发布者收到的更新应该GRDBCombine发布者的数据库查询中使用。

这是我迄今为止尝试过的简化版本:

但是,这个发布者会产生以下错误(根据上面我的发布者的简化版本进行编辑):

Cannot convert return expression of type 'AnyPublisher<Publishers.FlatMap<_, AnyPublisher<Defaults.KeyChange<Int>, Never>>.Output, Publishers.FlatMap<_, AnyPublisher<Defaults.KeyChange<Int>, Never>>.Failure>' (aka 'AnyPublisher<_.Output, Never>') to return type 'AnyPublisher<[Task], Never>'

我敢打赌,两个发布者的值不同是有问题的:[Task]Defaults.KeyChange<Int>. 但是,我找不到解决此问题的方法。