我一直在尝试观看“ SwiftUI简介-构建您的第一个应用程序” WWDC 19视频。本演讲没有提供示例代码,但随着演示者的进行,我一直在创建它。尝试创建存储时,我从以下行收到“无法调用无参数的'发送'的错误”:
didSet { didChange.send() }
我是编程和尝试解决问题的新手。
import SwiftUI
import Combine
class ReferenceStore : BindableObject {
var references: [Reference] {
didSet { didChange.send() }
}
init(references: [Reference] = []) {
self.references = references
}
var didChange = PassthroughSubject<Void, Never>()
}
如果有帮助,我正在使用Xcode 11 beta和MacOS Catalina。
答案 0 :(得分:6)
PassthroughSubject<Void, Never>
是您的发布者,它声明为:
final class PassthroughSubject<Output, Failure> where Failure : Error
这是send
函数:
final func send(_ input: Output)
这意味着send
需要一个Void
参数,在Swift中是空元组()
。
替换:
didChange.send()
使用
didChange.send(())
答案 1 :(得分:0)
将代码替换为
UIButton
答案 2 :(得分:0)
在 Xcode 11 beta 4 中,您可以仅使用send()实例方法。
func send()
用法:
var references: [Reference] {
didSet { didChange.send() }
}
更新:
BindableObject
协议的要求现在为将更改 而不是 didChange ,现在应该在对象之前发送 变化,而不是变化之后。此更改允许改进 合并变更通知。
因此将您的代码更改为
class ReferenceStore : BindableObject {
var references: [Reference] {
didSet { willChange.send() }
}
init(references: [Reference] = []) {
self.references = references
}
var willChange = PassthroughSubject<Void, Never>()
}