使用变量作为 arc4random 的下限 - 显式 type/strideable?
Using variable as lower bound for arc4random - explicit type/strideable?
)
我更新了 "Workout Object" 以同时设置最小和最大重复次数。
当我在操场上对下界进行硬编码时,我一直在使用:
let numberOfExercises = Int(arc4random_uniform(4) + 3)
当我尝试在 function/with a class 对象中使用变量时,出现错误“+'不可用:请使用显式类型转换或 Strideable 方法进行混合类型算术”例如这里...
class ExerciseGeneratorObject: Object {
@objc dynamic var name = ""
@objc dynamic var minReps = 0
@objc dynamic var maxReps = 0
convenience init(name: String, minReps: Int, maxReps: Int) {
self.init()
self.name = name
self.minReps = minReps
self.maxReps = maxReps
}
func generateExercise() -> WorkoutExercise {
return WorkoutExercise(
name: name,
//get error on this line...
reps: Int(arc4random_uniform(UInt32(maxReps))+minReps)
)
}
}
此处有答案,但该方法已在使用,因此看不到它在此处的适用性。
也在这里 '+' is deprecated: Mixed-type addition is deprecated in Swift 3.1 但再次认为这是一个不同的问题
'+' is unavailable: Please use explicit type conversions or Strideable methods for mixed-type arithmetics.
示例:
let a: UInt32 = 4
let b = 3
let result = a + b //error
基本上意味着你不能添加混合类型。
在您执行 arc4random_uniform(UInt32(maxReps)) + minReps
、arc4random_uniform()
returns 的情况下,UInt32
无法添加到 minReps
,因为那是 Int
.
解决方案:
更新括号:
let numberOfExercises = Int(arc4random_uniform(UInt32(maxReps))) + minReps
这里 Int(arc4random_uniform(UInt32(maxReps)))
给出了一个 Int
我们可以添加到 minReps
Int
.
顺便说一句,以下是开箱即用的:
let numberOfExercises = Int(arc4random_uniform(4) + 3)
因为Swift的自动类型推断。基本上它只是继续 UInt32
而不会打扰你。那就是......直到你给它明确的混合类型。
)
我更新了 "Workout Object" 以同时设置最小和最大重复次数。
当我在操场上对下界进行硬编码时,我一直在使用:
let numberOfExercises = Int(arc4random_uniform(4) + 3)
当我尝试在 function/with a class 对象中使用变量时,出现错误“+'不可用:请使用显式类型转换或 Strideable 方法进行混合类型算术”例如这里...
class ExerciseGeneratorObject: Object {
@objc dynamic var name = ""
@objc dynamic var minReps = 0
@objc dynamic var maxReps = 0
convenience init(name: String, minReps: Int, maxReps: Int) {
self.init()
self.name = name
self.minReps = minReps
self.maxReps = maxReps
}
func generateExercise() -> WorkoutExercise {
return WorkoutExercise(
name: name,
//get error on this line...
reps: Int(arc4random_uniform(UInt32(maxReps))+minReps)
)
}
}
此处有答案
也在这里 '+' is deprecated: Mixed-type addition is deprecated in Swift 3.1 但再次认为这是一个不同的问题
'+' is unavailable: Please use explicit type conversions or Strideable methods for mixed-type arithmetics.
示例:
let a: UInt32 = 4
let b = 3
let result = a + b //error
基本上意味着你不能添加混合类型。
在您执行 arc4random_uniform(UInt32(maxReps)) + minReps
、arc4random_uniform()
returns 的情况下,UInt32
无法添加到 minReps
,因为那是 Int
.
解决方案:
更新括号:
let numberOfExercises = Int(arc4random_uniform(UInt32(maxReps))) + minReps
这里 Int(arc4random_uniform(UInt32(maxReps)))
给出了一个 Int
我们可以添加到 minReps
Int
.
顺便说一句,以下是开箱即用的:
let numberOfExercises = Int(arc4random_uniform(4) + 3)
因为Swift的自动类型推断。基本上它只是继续 UInt32
而不会打扰你。那就是......直到你给它明确的混合类型。