【问题标题】:How to access the wrapped value of a @Published property when passing to generic function传递给泛型函数时如何访问@Published 属性的包装值
【发布时间】:2019-10-23 02:34:34
【问题描述】:

当我将声明为@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!

【问题讨论】:

  • @matt 我从帖子中删除了编辑并将其作为答案。谢谢。
  • 非常酷,谢谢。并感谢您报告此错误并坚持使用它。

标签: swift combine


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2015-06-21
    相关资源
    最近更新 更多