将绑定<Double> 转换为类型 Int - Swift UI
Casting a binding<Double> to type Int - Swift UI
我正在尝试将 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)
}
如何将 Binding 转换为标准类型?
这里是创建绑定 Observable 对象的 class。
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)
}
或
您可以在访问您的值变量时摆脱 $
,以这种方式删除绑定:
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)
}
我正在尝试将 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)
}
如何将 Binding 转换为标准类型?
这里是创建绑定 Observable 对象的 class。
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)
}
或
您可以在访问您的值变量时摆脱 $
,以这种方式删除绑定:
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)
}