属性定义已推断类型“ some View”,涉及另一个声明的“ some”返回类型

时间:2019-07-21 15:33:27

标签: swiftui

当我更新到xcode 13 beta 4时,它不起作用。

显示错误:

  

属性定义推断出类型“ some View”,涉及另一个声明的“ some”返回类型

struct RatingToStar : View {
    var rating: Int
    let star = Image(systemName: "star").foregroundColor(.yellow)
    let fillStar = Image(systemName: "star.fill").foregroundColor(.yellow)

    var body: some View {
        HStack {
            if rating >= 1 {fillStar}else{star}
            if rating >= 2 {fillStar}else{star}
            if rating >= 3 {fillStar}else{star}
            if rating >= 4 {fillStar}else{star}
            if rating >= 5 {fillStar}else{star}
        }
    }
}

2 个答案:

答案 0 :(得分:0)

在Beta 4中,视图修饰符的返回类型已清理并制成some View。发行说明是这样的:

  

视图修饰符方法返回不透明视图(某些视图),而不是   复杂的泛型类型。 (46140669)

这就是导致行为改变的原因。由于无法完全确定错误,目前我无法为您提供错误消息的完整说明,但是我可以为您提供一个简单的解决方法:

struct RatingToSta : View {
    var rating: Int

    let star = AnyView(Image(systemName: "star").foregroundColor(.yellow))
    let fillStar = AnyView(Image(systemName: "star.fill").foregroundColor(.yellow))

    var body: some View {
        HStack {
            if rating >= 1 { fillStar } else{ star }
            if rating >= 2 { fillStar } else{ star }
            if rating >= 3 { fillStar } else{ star }
            if rating >= 4 { fillStar } else{ star }
            if rating >= 5 { fillStar } else{ star }
        }
    }
}

如果我发现更多信息,我将确保返回并更新答案。

答案 1 :(得分:0)

您还可以通过指定some View

的类型来修复它
let star : some View = Image(systemName: "star").foregroundColor(.yellow)