如何在Swift 5.1中修复“无法不带参数地调用'发送'”

wel*_*hys 4 swift swiftui combine

我一直在尝试观看“ SwiftUI简介-构建您的第一个应用程序” WWDC 19视频。本演讲没有提供示例代码,但随着演示者的进行,我一直在创建它。当尝试创建商店时,我从该行收到“无法调用无参数的'发送'的错误”:

didSet { didChange.send() }
Run Code Online (Sandbox Code Playgroud)

我是编程的新手,正在努力进行故障排除。

import SwiftUI
import Combine

class ReferenceStore : BindableObject {
    var references: [Reference] {
        didSet { didChange.send() }
    }

    init(references: [Reference] = []) {
        self.references = references
    }

    var didChange = PassthroughSubject<Void, Never>()
}
Run Code Online (Sandbox Code Playgroud)

如果有帮助,我正在使用Xcode 11 beta和MacOS Catalina。

Mat*_*ini 7

PassthroughSubject<Void, Never> 是您的发布者,它声明为:

final class PassthroughSubject<Output, Failure> where Failure : Error
Run Code Online (Sandbox Code Playgroud)

这是send函数:

final func send(_ input: Output)
Run Code Online (Sandbox Code Playgroud)

这意味着send需要一个Void参数,在Swift中为空tuple ()

更换:

didChange.send()

didChange.send(())

  • 谢谢,这是很好的解释,并可以正常工作! (2认同)