属性 定义已推断类型 'some View',涉及另一个声明的 'some' return 类型
Property definition has inferred type 'some View', involving the 'some' return type of another declaration
当我更新到 xcode 13 beta 4 时它不起作用。
显示错误:
Property definition has inferred type 'some View', involving the 'some' return type of another declaration
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}
}
}
}
在 beta 4 中,return 视图修饰符的类型已被清理并成为 some View
。发行说明是这样说的:
View modifier methods return opaque views (some View) rather than
complex generic types. (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 }
}
}
}
如果我了解更多,我一定会回来更新我的答案。
您也可以通过指定 some View
的类型来修复它
let star : some View = Image(systemName: "star").foregroundColor(.yellow)
当我更新到 xcode 13 beta 4 时它不起作用。
显示错误:
Property definition has inferred type 'some View', involving the 'some' return type of another declaration
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}
}
}
}
在 beta 4 中,return 视图修饰符的类型已被清理并成为 some View
。发行说明是这样说的:
View modifier methods return opaque views (some View) rather than complex generic types. (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 }
}
}
}
如果我了解更多,我一定会回来更新我的答案。
您也可以通过指定 some View
let star : some View = Image(systemName: "star").foregroundColor(.yellow)