7

我正在检查苹果的新框架Combine。我创建了一个 Playground,在 macOS Mojave 10.14.5 和 Xcode 11.0 beta (11M336w) 中运行它。

这是我的代码:

import Combine

struct Article: Identifiable {

    var id: Int
    var title: String
}

final class Data: BindableObject {

    let didChange = PassthroughSubject<Data, Never>()

    var showFavouriteOnly = false {
        didSet {
            didChange.send(self)
        }
    }
    var articles: [Article] = [.init(id: 1, title: "WWDC 2018"),
                               .init(id: 2, title: "WWDC 2019")] {
        didSet {
            didChange.send(self)
        }
    }
}

但它失败并显示日志:

错误:无法查找符号:Combine.PassthroughSubject.send(A) -> ()

我究竟做错了什么?

4

2 回答 2

2

如果您创建了 iOS Playground,那么Combine即使您在 macOS 10.14 上运行 Xcode 11 或更高版本也应该可以工作。如果您创建了 macOS Playground,Combine则仅当您在 macOS 10.15 (Catalina) 或更高版本上运行 Xcode 11 或更高版本时才有效。

如果您创建了一个 iOS Playground,那么您完全有可能在 Combine(或 Swift 编译器)中发现了一个 bug。如果您愿意,可以在Apple 的反馈网站上报告。

于 2019-06-11T08:13:10.137 回答
1

Xcode 11 beta 的第一个版本没有 Combine 工作,它已在发行说明中说明。

您应该下载第二个 Xcode 11 beta (11M337n)

于 2019-06-26T05:12:40.470 回答