传递给泛型函数时如何访问@Published属性的包装值

时间:2019-10-23 02:34:34

标签: swift combine

当我将一个声明为@Published的属性传递给泛型函数时,我得到一个错误,指向发布的值。在我使用该变量的其他任何地方都很好,只是在传递给泛型函数时不行。

错误:

error: cannot convert value 'user' of type 'User?' to expected type 'Published<User?>.Publisher?', use wrapper instead

这是游乐场代码:

struct User {}

class Test {
    @Published var user: User?
}

func normalFunc(_ argument: User?) -> User? {
    return argument
}

func genericFunc<T>(_ argument: T?) -> T? {
    return argument
}

let test = Test()
normalFunc(test.user) // Ok
genericFunc(test.user) // Error

我能做的最好的就是将值包装在括号中,如下所示:

genericFunc((test.user)) // Ok!

1 个答案:

答案 0 :(得分:1)

这是一个已确认的错误,已通过https://github.com/apple/swift/pull/30129修复