ios - 当尝试使用 Int.random() 直接将变量设置为随机整数时,为什么我的程序无法正常工作?

标签 ios swift

我正在遵循在线教程,并尝试使用 randomBallNumber = Int.random(in: 0...4 ) 将我的 randomBallNumber 变量直接设置为 1 到 4 之间的随机数),我的代码不起作用。但是,当我第一次使用 var randomBallNumber = 0 ,然后将其值更改为函数内部的随机值时,它可以正常运行。

作品:

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/

相关文章:

ios - 在使用自定义 UITableViewCell 时解决没有自定义 init 方法的问题

ios - 接入点 : Screen blinks but no text is shown

swift - Swift 上的通用 Equatable 类

ios - 如何使用异步调用对 @IBAction 进行单元测试

swift - 为什么类的 init 方法中不需要隐式可选?

ios - 如何为自定义 UIButton 的不同状态使用矢量图形?

ios - 检测触摸节点任意一侧的节点

ios - 为什么 Apple 使用特殊的 COREDATA_EXTERN 限定符而不只是 extern?

ios - 关闭键盘时,如何将现有文本字段保留在同一位置?

ios - 如何从 ViewController 传递数据以嵌入 View Controller