无法将类型 'Void' 的值转换为预期的参数类型“(String) -> Void”
Cannot convert value of type 'Void' to expected argument type '(String) -> Void'
我正在编写应用程序时出现此错误:
Cannot convert value of type 'Void' to expected argument type '(String) -> Void'
函数为:
func updateSymbolsPadding(symbolType: String, symbolSize:inout Double) -> Void {
var size: Double
if symbolType=="multiply" {
size = 2.4
} else if symbolType=="circle" {
size = 2.0
} else if symbolType=="triangle" {
size = 2.0
} else if symbolType=="square" {
size = 2.0
} else if symbolType=="pentagon" {
size = 2.0
} else if symbolType=="octagon" {
size = 2.0
}
symbolSize = size
}
然后我在选择器中调用了它:
Picker("symbol one", selection: $symbolOne, content: {
Image(systemName: "multiply")
.tag("multiply")
Image(systemName: "circle")
.tag("circle")
Image(systemName: "triangle")
.tag("triangle")
Image(systemName: "square")
.tag("square")
Image(systemName: "pentagon")
.tag("pentagon")
Image(systemName: "octagon")
.tag("octagon")
})
.onChange(of: symbolOne, perform: updateSymbolsPadding(symbolType: symbolOne, symbolSize: &symbolOneSize))
变量是:
@Binding var symbolOne: String
@Binding var symbolOneSize: Double
我该如何解决这个问题?
正如 Ptit Xav 所说:执行参数必须是闭包而不是函数调用的结果。
替换
.onChange(of: symbolOne, perform: updateSymbolsPadding(symbolType: symbolOne, symbolSize: &symbolOneSize))
有
.onChange(of: symbolOne) { symbolOne in
updateSymbolsPadding(symbolType: symbolOne, symbolSize: &symbolOneSize)
}
我正在编写应用程序时出现此错误:
Cannot convert value of type 'Void' to expected argument type '(String) -> Void'
函数为:
func updateSymbolsPadding(symbolType: String, symbolSize:inout Double) -> Void {
var size: Double
if symbolType=="multiply" {
size = 2.4
} else if symbolType=="circle" {
size = 2.0
} else if symbolType=="triangle" {
size = 2.0
} else if symbolType=="square" {
size = 2.0
} else if symbolType=="pentagon" {
size = 2.0
} else if symbolType=="octagon" {
size = 2.0
}
symbolSize = size
}
然后我在选择器中调用了它:
Picker("symbol one", selection: $symbolOne, content: {
Image(systemName: "multiply")
.tag("multiply")
Image(systemName: "circle")
.tag("circle")
Image(systemName: "triangle")
.tag("triangle")
Image(systemName: "square")
.tag("square")
Image(systemName: "pentagon")
.tag("pentagon")
Image(systemName: "octagon")
.tag("octagon")
})
.onChange(of: symbolOne, perform: updateSymbolsPadding(symbolType: symbolOne, symbolSize: &symbolOneSize))
变量是:
@Binding var symbolOne: String
@Binding var symbolOneSize: Double
我该如何解决这个问题?
正如 Ptit Xav 所说:执行参数必须是闭包而不是函数调用的结果。
替换
.onChange(of: symbolOne, perform: updateSymbolsPadding(symbolType: symbolOne, symbolSize: &symbolOneSize))
有
.onChange(of: symbolOne) { symbolOne in
updateSymbolsPadding(symbolType: symbolOne, symbolSize: &symbolOneSize)
}