我正在遵循在线教程,并尝试使用 randomBallNumber = Int.random(in: 0...4 ) 将我的
,我的代码不起作用。但是,当我第一次使用 var randomBallNumber = 0 ,然后将其值更改为函数内部的随机值时,它可以正常运行。randomBallNumber
变量直接设置为 1 到 4 之间的随机数)
作品:
class ViewController: UIViewController {
let ballArray = ["ball1", "ball2", "ball3", "ball4", "ball5"]
var randomBallNumber = 0
func newBallImage() {
ImageView.image = UIImage(named: ballArray[randomBallNumber])
randomBallNumber = Int.random(in: 0...4)
}
@IBOutlet weak var ImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
newBallImage()
}
@IBAction func askButtonPressed(_ sender: Any) {
newBallImage()
}
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
newBallImage()
}
}
不起作用:
class ViewController: UIViewController {
let ballArray = ["ball1", "ball2", "ball3", "ball4", "ball5"]
var randomBallNumber = Int.random(in: 0...4)
func newBallImage() {
ImageView.image = UIImage(named: ballArray[randomBallNumber])
}
@IBOutlet weak var ImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
newBallImage()
}
@IBAction func askButtonPressed(_ sender: Any) {
newBallImage()
}
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
newBallImage()
}
}
我收到的唯一控制台错误是:
2019-07-10 07:22:45.328092+0300 8BallPool[86631:3716368] libMobileGestalt MobileGestalt.c:890: MGIsDeviceOneOfType is not supported on this platform.
并且它显示了两种变体。
预期的结果是当出现 Ask! 时图像会发生变化。按钮被按下,而使用第二段代码时却没有按下。
最佳答案
var randomBallNumber = Int.random(in: 0...4)
这将被初始化一次,之后randomBallNumber
的值将不会改变,除非您再次更改它。
因此,与其将其作为全局变量,不如创建一个如下函数:
func getRandomNumber() -> Int {
return Int.random(in: 0...4)
}
并在需要randomBallNumber
的任何地方调用它,例如:
ImageView.image = UIImage(named: ballArray[getRandomNumber()])
注意:始终以camelCase
声明变量和 socket 名称,其中第一个字符应较小。这里您的 ImageView
是一个非常错误的名称,而是将其命名为 randomBallImageView
。
关于ios - 当尝试使用 Int.random() 直接将变量设置为随机整数时,为什么我的程序无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56963434/