问题标签 [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.
swift - 结合在游乐场
我正在检查苹果的新框架Combine。我创建了一个 Playground,在 macOS Mojave 10.14.5 和 Xcode 11.0 beta (11M336w) 中运行它。
这是我的代码:
但它失败并显示日志:
错误:无法查找符号:Combine.PassthroughSubject.send(A) -> ()
我究竟做错了什么?
swift - 读取环境对象外部视图.body
我构建了一个绑定到我的自定义视图的 BindableObject。
我想更新此类中的项目数组
我有一个视图模型,我可以在其中进行获取,因为我不想将服务注入到这个 ListData 类中。这是因为我不想让它做任何获取,我想将它保留在我的视图模型中。
但是当我尝试更新我的 VM 中的 ListData.Items 时,我收到了这个错误:Reading EnvironmentObject outside View.body: file
您是否只允许在这个新视图类的主体内更新这个变量?在这种情况下,您是否应该在 BindableObject 中完成所有网络工作?
尚未找到有关此最佳实践的任何文档。
ios - iOS Swift:“NotificationCenter”类型的值没有成员“发布者”
正如Apple在此视频中解释的那样, 我正在尝试将新的Combine框架与通知中心一起使用: https ://developer.apple.com/videos/play/wwdc2019/721/
您可以在幻灯片 21 中找到它。
看来我的项目没有读取Combine framework apis。
我收到了这个错误:
“NotificationCenter”类型的值没有成员“发布者”
ios - IOS 13 组合框架 - @Published 不起作用(“未知属性'已发布'”)
我观看了 WWDC 2019 会议“实践中的结合”(https://developer.apple.com/videos/play/wwdc2019/721/)。
在视频中,他们使用以下语法创建发布者:
他们这样做是为了someName
成为出版商。但是,Xcode 不喜欢这种语法并给我一个错误:
未知属性“已发布
我不知道为什么。我在 macOS Catalina 上使用 Xcode 11 测试版。
有任何想法吗?
swift - 从现有的 SwiftUI @States 派生绑定
我一直在玩 SwiftUI 和 Combine,感觉可能有一种方法可以在视图中获取现有的 @State 属性并创建一个新属性。
例如,我有一个密码创建视图,其中包含用户的密码和密码确认字段。我想获取这两个@State 属性并派生一个新的@State,我可以在我的视图中使用它来断言输入是否有效。所以为了简单起见:不是空的和相等的。
Apple 文档说有一个绑定的出版商,但我似乎无法掌握它。
这是一些不起作用的伪代码:
任何人都找到了。解决这个问题的适当方式/如果可能的话?
更新测试版 2:
由于 beta 2 发布者可用,因此此代码的前半部分现在可以使用。在视图中使用生成的发布者的后半部分我还没有弄清楚(disabled(!valid)
)。
谢谢。
swift - 如何在 Swift 5.1 中修复“无法在没有参数的情况下调用‘发送’”
我一直在尝试关注“介绍 SwiftUI - 构建您的第一个应用程序”WWDC 19 视频。本次演讲没有提供示例代码,但我一直在随着演示者的进行而创建它。在尝试创建商店时,虽然我从该行收到“无法调用 'send' with no arguments”的错误:
我是编程新手,正在努力排除故障。
如果有帮助,我正在使用 Xcode 11 beta 和 MacOS Catalina。
swift - 如何使用 combine Publisher 更改线程?
我正在使用 Combine 和 SwiftUI 来做一些异步操作,关键是我不知道如何从主线程中的异步操作接收响应。苹果文档说它可以用于 RunLoop.main,但目前在 Swift 5.0 中它不是调度程序。那么对此有什么想法吗?
我曾尝试按照苹果文档使用,但没有运气。
swift - 在这个例子中美元符号有什么作用?
Apple 关于 SwiftUI 的本教程使用美元符号来绑定数据,我在 SwiftUI 中找不到有关此数据绑定的更多信息。
您使用 $ 前缀来访问与状态变量或其属性之一的绑定。
这是某种inout
类型参数吗?这使用&符号来传递它。
ios - SwiftUI 列表数据的可识别协议扩展
我正在试验 SwiftUI,并在为我的一个 List 实现数据模型时遇到了一个问题。我的计划是创建一个协议CardProtocol
作为列表元素的数据协议,然后有一个协议的 CoreData 实现以及一个用于单元测试和 Canvas 使用的虚拟实现。如果您在 SwiftUI 中使用数据集合,List
则单个元素需要符合Identifiable
协议。
代码如下所示:
这甚至不会编译,因为Identifiable
协议有 2 个关联类型,如果协议要用于变量定义,则需要指定这些类型。
确切的错误是error: protocol 'CardProtocol' can only be used as a generic constraint because it has Self or associated type requirements
。现在ID
不是问题并且可以修复,但IdentifiedValue
它在 CoreData 和虚拟实现中本质上是不同的。
我发现唯一合理的解决方案是从协议中删除对 的遵从性,Identifiable
并稍后在视图中使用cardsModel.cards.identified(by: \.id)
. 有没有更好的方法可以让我在协议级别保持可识别的合规性?
swift - Swift 结合发布者-订阅者的骨架示例
当我将一些 Objective-C 代码移植到 Swift 时,我试图更好地理解新Combine
框架以及如何使用它来重新创建通用设计模式。
在这种情况下,设计模式是单个对象(Manager、Service 等),任何数量的“客户端”都可以注册为委托以接收回调。这是使用委托的基本 1:Many 模式。
Combine
看起来很理想,但示例代码有点薄。下面是一个工作示例,但我不确定它是否正确或按预期使用。特别是,我对对象之间的引用循环很好奇。
输出是:
这甚至与Combine
预期的使用方式相近吗?