跟踪随机数

时间:2016-02-20 17:26:31

标签: ios xcode swift if-statement random

我想将图像应用到我的12个UIButton中的3个随机UIButton中。

修改

这是工作代码;

let buttons:NSArray = [button1, button2, button3, button4, button5, button6, button7, button8, button9, button10, button11, button12].shuffle()

buttons[0].setImage(UIImage(named: "code1"), forState: .Normal)
buttons[1].setImage(UIImage(named: "code1"), forState: .Normal)
buttons[2].setImage(UIImage(named: "code1"), forState: .Normal)

工作洗牌功能;

extension CollectionType {
func shuffle() -> [Generator.Element] {
var list = Array(self)
list.shuffleInPlace()
return list
   }
}

extension MutableCollectionType where Index == Int {
mutating func shuffleInPlace() {

if count < 2 { return }

for i in 0..<count - 1 {
    let j = Int(arc4random_uniform(UInt32(count - i))) + i
    guard i != j else { continue }
    swap(&self[i], &self[j])
     }
   }  
 }

3 个答案:

答案 0 :(得分:3)

这里有一个不同的想法:将所有12个UIButtons抛出一个数组,将该数组洗牌并操纵前三个元素:

var buttons = [button1, button2, ..., button12]
buttons.shuffled()

// Do whatever with buttons[0] - button[2]
buttons[0].setImage(UIImage(named: "..."), forState: .Normal)
buttons[1].setImage(UIImage(named: "..."), forState: .Normal)
buttons[2].setImage(UIImage(named: "..."), forState: .Normal)

答案 1 :(得分:2)

试试这个:

if (pick3numbers[0] == 1 || pick3numbers[1] == 1 || pick3numbers[2] == 1) {
    //your code here
}

Swift的OR运算符有两个垂直条而不是一个。

编辑: 根据您的编辑和@ Eendje的想法,请尝试:

for i in 1...12 {
    if pick3numbers.contains(i) {
        //your code
    }
}

答案 2 :(得分:1)

因为数组是从0开始的,所以索引12超出范围(你只有12个对象,索引0-11)

删除在buttons[12]上设置图片的行,它应该有效。