我正在尝试将Binding的值强制转换为Int值,但是在转换时始终会失败。
它必须是一个int才能生成随机数。
func randomise(startNumber: Int, endNumber: Int) -> Int{
let startNum = $value.startNumber
let endNum = $value.endNumber
let generated = arc4random_uniform(UInt32(endNum - startNum)) + UInt32(startNum)
return Int(generated)
}
绑定到标准类型的转换如何工作?
这是创建绑定的Observable对象的类。
final class Value:ObservableObject {
@Published var startNumber: Double = 0
@Published var endNumber: Double = 5000
}
产生两个错误:
Initializer 'init(_:)' requires that 'Binding<Double>' conform to 'BinaryInteger'
Referencing operator function '-' on 'BinaryInteger' requires that 'Binding<Double>' conform to 'BinaryInteger'
谢谢!
@ObservedObject是围绕实际对象的属性包装器。因此,要访问这些属性的非绑定值,可以使用wrappedValue
:
func randomise(startNumber: Int, endNumber: Int) -> Int{
let startNum = $value.startNumber
let endNum = $value.endNumber
let generated = arc4random_uniform(UInt32(endNum.wrappedValue - startNum.wrappedValue)) + UInt32(startNum.wrappedValue)
return Int(generated)
}
要么
您可以$
在访问值变量时摆脱,从而删除Binding:
func randomise(startNumber: Int, endNumber: Int) -> Int{
let startNum = value.startNumber
let endNum = value.endNumber
let generated = arc4random_uniform(UInt32(endNum - startNum)) + UInt32(startNum)
return Int(generated)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句