combine相关内容
我有一个子视图,它从父视图获得了一个绑定,它控制着应用程序的侧边栏菜单.当我单击按钮切换 showSidebar 并打开菜单时,我的 vm 被重新创建,因为视图被重新渲染?有没有办法在不影响视图模型的情况下做到这一点? struct OnboardingView:查看{@Environment (\.presentationMode) varpresentationMode@ObservedOb
..
我已经尝试过 ObservableObject 文档中的示例.> class 联系方式:ObservableObject {@Published var 名称:String = "me"@Published var 年龄:Int = 7} 当我使用代码创建 Swift Playground 时: let c = Contact()c.objectWillChange.sink { 打印(“这
..
我正在尝试聆听 @State 的变化并遵循 这个答案.这是我的代码: 导入 SwiftUI结构内容视图:查看{@State var isOn = falsevar主体:一些视图{切换(“选择",isOn:$isOn).onReceive(Just(isOn)) { isOn in打印(“切换是否打开?\(isOn)")}}} 它无法编译:我得到“无法在范围内找到 'Just'" Just
..
我所有的 API 端点都返回一个在 Postman 中看起来像这样的响应: {“状态代码":401,"错误": "未经授权","message": "缺少身份验证"} 我想做的是发出请求,并在 Swift 中访问这些属性.在某些情况下,我会在应用程序的前面使用错误消息属性的值.这将由返回的 statusCode 确定. 我现在拥有的是: 私有变量可取消:AnyCancellable?
..
在我的应用中,我添加了后台音频和后台处理功能. 我的代码目前使用 AVAudioPlayer 来播放音频.虽然当应用在前台时播放效果很好,但在锁定屏幕的情况下,音频会有一些静态抖动. 我的应用程序是使用 SwiftUI 和 Combine 编写的.有没有人遇到过这个问题,你有什么建议作为解决方法? 这是play方法: ///播放一个 `AudioFile`///- 参数:///
..
我有一个包含多个项目的列表,它们打开一个 DetailView,而后者又包含一个视图模型.视图模型应该有一个服务类,该服务类在详细视图出现时进行初始化,并在返回时取消初始化. 然而,第一个问题是,在我下面的示例中,所有 3 个 ViewModel 实例都是同时创建的(当 ContentView 显示时)并且从不从内存中释放(deinit 永远不会被调用). struct ContentVi
..
我正在寻找一种在 onReceive 中观察 @State 或 @Binding 值变化的方法.我不能让它工作,我怀疑这是不可能的,但也许有一种方法可以将它们转换为 Publisher 或其他东西,同时保持源更新值,就像它现在所做的那样? 你可以在下面找到我为什么需要这个的一些背景: 我有一个父视图,它应该基于这个库显示半模态:https://github.com/AndreaMiot
..
我对 SwiftUI 和 Combine 非常陌生,尽管我对 Swift 有丰富的经验,并且对 ReactiveKit 有一些了解,但我发现很难让一些基本的东西发挥作用. 例如,我试图在我的 ViewModel 上添加一个 isLoggedIn 属性,它应该简单地“转发"UserManager 类' isLoggedIn财产.使用 ReactiveKit 这很简单,但是使用 SwiftUI/
..
我有一个带有 SwiftUI 应用程序生命周期的 SwiftUI 应用程序.我正在尝试设置一种标准的添加方式将 debounce 输入到 TextFields.理想情况下,我想创建自己的 TextField 修饰符可以很容易地应用于有许多文本字段要编辑的视图.我试过一堆方法来做到这一点,但我必须错过一些基本的东西.这是一个例子.这个不起作用: struct ContentView: 查看 {@S
..
我正在尝试在 Swift 5 和适用于 iOS 的组合框架中实施刷新令牌策略. 我不打算使用任何第三方包,只使用框架提供的`URLSession.dataTaskPublisher`,所以我的目标是: 提出请求 如果请求失败并返回 401,则刷新 auth 令牌(这是另一个请求) 刷新令牌完成后,重试第一个请求 如果失败,则抛出由调用者处理的错误 这是一个非常简单
..
这里我有一个简单的 SwiftUI 项目,它有两个计时器发布器,它们分别设置为每 1 秒和 2 秒触发一次. 预期行为是第一个标签每秒更新一次,第二个标签每 2 秒更新一次.然而,实际发生的只是第一个标签每秒更新一次,而第二个标签无限期地保持为 0. 我知道使用 Timer.scheduledTimer(withTimeInterval:) 可以通过简单地创建这些计时器实例的新变量来创
..
我不明白当我尝试通过调用 viewContext.execute(deleteRequest) 删除所有项目时,SwiftUI 不会重绘 UI.我看到来自 sqlite 的项目不见了. struct CloudKitTestView: View {@Environment(\.managedObjectContext) 私有变量 viewContext@获取请求(sortDescriptors:
..
我有一个组合函数,用于搜索项目列表并返回匹配项.它不仅跟踪向用户显示与搜索词匹配的哪些项目,而且跟踪哪些项目已被标记为“已选择".由用户. 该函数效果很好,包括动画,直到我添加 .debounce(for: .seconds(0.2), scheduler: RunLoop.main) 或 .receive(on: RunLoop.main) 在 Combine 发布者链中.那时,View
..
我正在开发一个采用 MVVM 模式的 iOS 应用程序,使用 SwiftUI 设计视图和 Swift 组合,以便将我的视图与其各自的视图模型粘合在一起.在我的一个 ViewModel 中,我为按钮按下创建了一个 Publisher(类型 Void),另一个用于 TextField 的内容(键入 String).我希望能够在我的 ViewModel 中组合两个发布者,这样组合的发布者仅在按钮发布者发
..
如何使用@Binding 驱动的控件构建动态列表,而无需手动引用数组?看起来很明显,但是使用 List 或 ForEach 遍历数组会产生各种奇怪的错误. struct OrderItem : 可识别 {让 id = UUID()变量标签:字符串无功值:布尔=假}结构内容视图:查看{@State var items = [OrderItem(label: "Shirts"),订单项(标签:“裤子
..
Apple 关于 SwiftUI 的本教程 使用美元符号进行绑定数据,我在 SwiftUI 中无法找到有关此数据绑定的更多信息. Toggle(isOn: $showFavoritesOnly) { 您可以使用 $ 前缀访问对状态变量或其属性之一的绑定. 这是某种 inout 类型参数吗?这使用与号来传递它. 解决方案 $ 与属性委托结合使用. 它不是运算符,而是一个前缀(
..
我用这种方式定义了带有一次性 Set 的 ViewModel class ViewModel {私有 var 一次性 = Set()功能同步(){repo.syncObjects().handleEvents(接收取消:{打印(“同步对象:已取消!")}).sink(receiveCompletion: { 完成输入切换完成{案例.失败(让错误):打印(“同步对象:\(错误)")案例.完成:pr
..
我可能以错误的方式处理这个问题,但我有一个函数,我想随着时间的推移发出多个值.但我不希望它在订阅该对象之前开始发射.我要从 RxSwift 结合起来,所以我基本上是在尝试在 RxSwift 世界中复制 Observable.create() .我发现最接近的是返回一个 Future,但 Futures 只有成功或失败(所以它们基本上就像 RxSwift 中的 Single.) 我在这里遗漏了
..
Realm 10.7.3、Xcode 12.4、macOS 11.2.3 我正在试验 Realm 和 Combine+SwiftUI.当我在 Realm Studio 中更改我的数据时,它们会按预期立即反映在我的应用程序 UI 中.但是当我添加或删除一个对象时,我的应用 UI 不会改变. 这是我的模型定义: //--- 型号 ---类项目:对象,ObjectKeyIdentifiab
..
我正在尝试使用在我的视图结构中声明为 @ObservedObject 的 @ObservableObject viewModel.问题是当 viewModel 改变它的“域"时.属性@Published var,UI 未更新.另外,我更改了在 init() {} 中调用的 getDomains() 函数内的域.看起来它被调用了两次,为什么会发生这种情况?这是我的 viewModel 代码: im
..