UIImage错误:索引超出范围

时间:2016-12-29 17:31:38

标签: ios swift

我的代码有问题,我试图制作一个简单的战争游戏应用程序,在开始时一切正常但是在10-20个点击按钮随机化新卡后我收到错误:< / p>

  

致命错误:索引超出范围

我知道变量的名称是不正确的,但我不是来自英格兰,所以我很快输入它们的英文单词和波兰语gramar:D,karty表示卡片)

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var LeftCardOutlet: UIImageView!
    @IBOutlet weak var RightcardOutlet: UIImageView!
    @IBOutlet weak var LeftScoreOutlet: UILabel!
    @IBOutlet weak var RightscoreOutlet: UILabel!

    var karty = ["card2","card3","card4","card5","card6","card7","card8","card9","card10","jack","queen","king"]

    var scoreplayer:Int=0
    var CPUscore:Int=0
    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }
    @IBAction func DealClicked(_ sender: UIButton) {
        var random1:Int = 0
        var random2:Int = 0
        random1 = Int(arc4random_uniform(UInt32(12)))
        random2 = Int(arc4random_uniform(UInt32(12)))
        var im1=UIImage(named:"\(karty[random1+1])")
        var im2=UIImage(named: "\(karty[random2+1])")
        LeftCardOutlet.image=im1
        RightcardOutlet.image=im2
        if random1>random2 {
            scoreplayer+=1
            LeftScoreOutlet.text=String(scoreplayer)
        }
        if random1<random2 {
            CPUscore+=1
            RightscoreOutlet.text=String(CPUscore)
        }
    }

}

我在这行中有错误:

var im2=UIImage (named: "\ (karty[random2+1])")

我是斯威夫特的新人,我的第三人,所以请理解:)

1 个答案:

答案 0 :(得分:0)

在几乎所有编程语言中,随机数生成器返回一个数字> = 0且&lt; (严格小于)论证。

所以Int(arc4random_uniform(UInt32(12)))返回0到11之间的数字(包括)。

此外,在几乎所有编程语言中,数组元素的索引都以第一个元素的0开头。因此,这将修复您的代码:

var im1=UIImage(named:"\(karty[random1])")
var im2=UIImage(named:"\(karty[random2])")

一旦您的代码正常运行,您可以访问我们的姐妹网站Code Review以寻求改进。