首页 > 解决方案 > 在范围内找不到“CombineLatest”

问题描述

我正在关注 WWDC 2019 'Combine in Practice' 视频,但出现以下错误

Cannot find 'CombineLatest' in scope

我是在 Xcode 12 制作的操场上做的

import SwiftUI
import Combine

class Stuff {
    @Published var password: String = ""
    @Published var passwordAgain: String = ""

    var validatedPassword: AnyPublisher<String?, Never> {
        // wtf? "Cannot find 'CombineLatest' in scope"
        return CombineLatest($password, $passwordAgain) { password, passwordAgain in
            guard password == passwordAgain, password.count > 8 else { return nil }
            return password
        }
        .map { $0 == "password1" ? nil : $0 }
        .eraseToAnyPublisher()
    }
}

自 2019 年以来 API 是否发生了变化?因为看起来

CombineLatest($password, $passwordAgain) -> $password.combineLatest($passwordAgain) 

这是真的?任何人都可以找到任何关于它是否属实以及为什么的正式文件吗?

标签: swiftcombine

解决方案


它嵌套在 下enum Publishers,因此您可以像这样访问它:

Publishers.CombineLatest($password, $passwordAgain)

或者,您可以将其用作运算符,这可以说是一种更常见的方式:

$password.combineLatest($passwordAgain)

推荐阅读