combine相关内容

SwiftUI 绑定到父视图重新渲染子视图

我有一个子视图,它从父视图获得了一个绑定,它控制着应用程序的侧边栏菜单.当我单击按钮切换 showSidebar 并打开菜单时,我的 vm 被重新创建,因为视图被重新渲染?有没有办法在不影响视图模型的情况下做到这一点? struct OnboardingView:查看{@Environment (\.presentationMode) varpresentationMode@ObservedOb ..
发布时间:2021-09-02 19:52:34 其他开发

如何在 Swift 中使用组合读取 JSON 错误对象的属性值?

我所有的 API 端点都返回一个在 Postman 中看起来像这样的响应: {“状态代码":401,"错误": "未经授权","message": "缺少身份验证"} 我想做的是发出请求,并在 Swift 中访问这些属性.在某些情况下,我会在应用程序的前面使用错误消息属性的值.这将由返回的 statusCode 确定. 我现在拥有的是: 私有变量可取消:AnyCancellable? ..
发布时间:2021-09-02 19:35:46 移动开发

在后台使用 AVAudioPlayer

在我的应用中,我添加了后台音频和后台处理功能. 我的代码目前使用 AVAudioPlayer 来播放音频.虽然当应用在前台时播放效果很好,但在锁定屏幕的情况下,音频会有一些静态抖动. 我的应用程序是使用 SwiftUI 和 Combine 编写的.有没有人遇到过这个问题,你有什么建议作为解决方法? 这是play方法: ///播放一个 `AudioFile`///- 参数:/// ..
发布时间:2021-09-02 19:35:43 其他开发

SwiftUI @ObservedObject viewmodel 在 List 的详细视图中从未发布

我有一个包含多个项目的列表,它们打开一个 DetailView,而后者又包含一个视图模型.视图模型应该有一个服务类,该服务类在详细视图出现时进行初始化,并在返回时取消初始化. 然而,第一个问题是,在我下面的示例中,所有 3 个 ViewModel 实例都是同时创建的(当 ContentView 显示时)并且从不从内存中释放(deinit 永远不会被调用). struct ContentVi ..
发布时间:2021-09-02 19:35:22 移动开发

观察绑定或状态变量

我正在寻找一种在 onReceive 中观察 @State 或 @Binding 值变化的方法.我不能让它工作,我怀疑这是不可能的,但也许有一种方法可以将它们转换为 Publisher 或其他东西,同时保持源更新值,就像它现在所做的那样? 你可以在下面找到我为什么需要这个的一些背景: 我有一个父视图,它应该基于这个库显示半模态:https://github.com/AndreaMiot ..
发布时间:2021-09-02 19:33:26 移动开发

如何“转发"@Published 值

我对 SwiftUI 和 Combine 非常陌生,尽管我对 Swift 有丰富的经验,并且对 ReactiveKit 有一些了解,但我发现很难让一些基本的东西发挥作用. 例如,我试图在我的 ViewModel 上添加一个 isLoggedIn 属性,它应该简单地“转发"UserManager 类' isLoggedIn财产.使用 ReactiveKit 这很简单,但是使用 SwiftUI/ ..
发布时间:2021-09-02 19:30:36 其他开发

SwiftUI 结合去抖动 TextField

我有一个带有 SwiftUI 应用程序生命周期的 SwiftUI 应用程序.我正在尝试设置一种标准的添加方式将 debounce 输入到 TextFields.理想情况下,我想创建自己的 TextField 修饰符可以很容易地应用于有许多文本字段要编辑的视图.我试过一堆方法来做到这一点,但我必须错过一些基本的东西.这是一个例子.这个不起作用: struct ContentView: 查看 {@S ..
发布时间:2021-09-02 19:25:54 移动开发

使用 SwiftUI 组合刷新令牌

我正在尝试在 Swift 5 和适用于 iOS 的组合框架中实施刷新令牌策略. 我不打算使用任何第三方包,只使用框架提供的`URLSession.dataTaskPublisher`,所以我的目标是: 提出请求 如果请求失败并返回 401,则刷新 auth 令牌(这是另一个请求) 刷新令牌完成后,重试第一个请求 如果失败,则抛出由调用者处理的错误 ​ 这是一个非常简单 ..
发布时间:2021-09-02 19:25:42 移动开发

如何设置多个组合计时器发布者?

这里我有一个简单的 SwiftUI 项目,它有两个计时器发布器,它们分别设置为每 1 秒和 2 秒触发一次. 预期行为是第一个标签每秒更新一次,第二个标签每 2 秒更新一次.然而,实际发生的只是第一个标签每秒更新一次,而第二个标签无限期地保持为 0. 我知道使用 Timer.scheduledTimer(withTimeInterval:) 可以通过简单地创建这些计时器实例的新变量来创 ..
发布时间:2021-09-02 19:20:13 移动开发

组合 + SwiftUI Form + RunLoop 导致表格视图呈现不可预测

我有一个组合函数,用于搜索项目列表并返回匹配项.它不仅跟踪向用户显示与搜索词匹配的哪些项目,而且跟踪哪些项目已被标记为“已选择".由用户. 该函数效果很好,包括动画,直到我添加 .debounce(for: .seconds(0.2), scheduler: RunLoop.main) 或 .receive(on: RunLoop.main) 在 Combine 发布者链中.那时,View ..
发布时间:2021-09-02 19:16:29 其他开发

Swift 组合运算符与 RxSwift 框架中的“withLatestFrom"等功能相同

我正在开发一个采用 MVVM 模式的 iOS 应用程序,使用 SwiftUI 设计视图和 Swift 组合,以便将我的视图与其各自的视图模型粘合在一起.在我的一个 ViewModel 中,我为按钮按下创建了一个 Publisher(类型 Void),另一个用于 TextField 的内容(键入 String).我希望能够在我的 ViewModel 中组合两个发布者,这样组合的发布者仅在按钮发布者发 ..
发布时间:2021-09-02 19:14:47 移动开发

带有@Binding 控件的 SwiftUI 动态列表

如何使用@Binding 驱动的控件构建动态列表,而无需手动引用数组?看起来很明显,但是使用 List 或 ForEach 遍历数组会产生各种奇怪的错误. struct OrderItem : 可识别 {让 id = UUID()变量标签:字符串无功值:布尔=假}结构内容视图:查看{@State var items = [OrderItem(label: "Shirts"),订单项(标签:“裤子 ..
发布时间:2021-09-02 19:10:13 其他开发

这个例子中的美元符号有什么作用?

Apple 关于 SwiftUI 的本教程 使用美元符号进行绑定数据,我在 SwiftUI 中无法找到有关此数据绑定的更多信息. Toggle(isOn: $showFavoritesOnly) { 您可以使用 $ 前缀访问对状态变量或其属性之一的绑定. 这是某种 inout 类型参数吗?这使用与号来传递它. 解决方案 $ 与属性委托结合使用. 它不是运算符,而是一个前缀( ..
发布时间:2021-09-01 20:37:11 移动开发

Swift Combine 如何设置作品?

我用这种方式定义了带有一次性 Set 的 ViewModel class ViewModel {私有 var 一次性 = Set()功能同步(){repo.syncObjects().handleEvents(接收取消:{打印(“同步对象:已取消!")}).sink(receiveCompletion: { 完成输入切换完成{案例.失败(让错误):打印(“同步对象:\(错误)")案例.完成:pr ..
发布时间:2021-08-31 20:48:51 移动开发

Swift 将 Future 与多个值结合起来?

我可能以错误的方式处理这个问题,但我有一个函数,我想随着时间的推移发出多个值.但我不希望它在订阅该对象之前开始发射.我要从 RxSwift 结合起来,所以我基本上是在尝试在 RxSwift 世界中复制 Observable.create() .我发现最接近的是返回一个 Future,但 Futures 只有成功或失败(所以它们基本上就像 RxSwift 中的 Single.) 我在这里遗漏了 ..
发布时间:2021-07-14 19:21:49 移动开发

SwiftUI 应用程序显示领域更改但不显示新对象

Realm 10.7.3、Xcode 12.4、macOS 11.2.3 我正在试验 Realm 和 Combine+SwiftUI.当我在 Realm Studio 中更改我的数据时,它们会按预期立即反映在我的应用程序 UI 中.但是当我添加或删除一个对象时,我的应用 UI 不会改变. 这是我的模型定义: //--- 型号 ---类项目:对象,ObjectKeyIdentifiab ..
发布时间:2021-07-05 18:47:34 其他开发

如何在 SwiftUI 中声明 viewModel 对象?

我正在尝试使用在我的视图结构中声明为 @ObservedObject 的 @ObservableObject viewModel.问题是当 viewModel 改变它的“域"时.属性@Published var,UI 未更新.另外,我更改了在 init() {} 中调用的 getDomains() 函数内的域.看起来它被调用了两次,为什么会发生这种情况?这是我的 viewModel 代码: im ..
发布时间:2021-07-03 19:45:38 移动开发