Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 跟踪随机数_Ios_Xcode_Swift_If Statement_Random - Fatal编程技术网

Ios 跟踪随机数

Ios 跟踪随机数,ios,xcode,swift,if-statement,random,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: .Nor

我想在总共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])
     }
   }  
 }
扩展集合类型{
func shuffle()->[Generator.Element]{
变量列表=数组(自身)
list.shuffleInPlace()
返回列表
}
}
扩展MutableCollectionType,其中索引==Int{
变异func shuffleInPlace(){
如果计数<2{return}
对于0..中的i,请尝试以下方法:

if (pick3numbers[0] == 1 || pick3numbers[1] == 1 || pick3numbers[2] == 1) {
    //your code here
}
Swift的OR运算符有两个竖条,而不是一个

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

试试这个:

if (pick3numbers[0] == 1 || pick3numbers[1] == 1 || pick3numbers[2] == 1) {
    //your code here
}
Swift的OR运算符有两个竖条,而不是一个

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


这里有一个不同的想法:将所有12个
ui按钮扔到一个数组中,洗牌该数组,然后操纵前三个元素:

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)

这里有一个不同的想法:将所有12个
ui按钮扔到一个数组中,洗牌该数组,然后操纵前三个元素:

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)

因为数组是基于0的,所以索引12是超出范围的(您只有12个对象,索引0-11)


删除设置
按钮[12]
上图像的行,它应该可以工作。

因为数组是基于0的,索引12是超出范围的(您只有12个对象,索引0-11)



删除
按钮[12]上设置图像的行< /代码>,它应该工作。下面的答案应该是好的,但是你应该考虑使用一个Switter语句,下面的答案应该是好的,但是你应该考虑使用一个Switter语句,它不是更简单地使用<代码>包含< /代码>吗?答案中使用的方法实际上是不实用的。回答?:)你的问题太长了:p,我不太确定你想要什么。不过我不介意发表一点评论:
如果pick3numbers.contains(1){//Your code}
,这与@yesthisisjoeI给出的答案完全相同。我无法在这里发布代码,但我更新了我的答案,其中的灵感来自于@Eendjework@yesthisisjoe我在其中所做的一切都实现了(//您的代码)-你为什么这么想?使用
包含
不是更简单吗?答案中使用的方法真的不实用。@Eendje你介意把你的想法作为答案发表吗?:)你的问题太长了:p,我不太确定你想要什么。不过我不介意把它作为注释发表一点:
如果pick3numbers.contains(1){//你的代码}
,这与@yesthisisjoeI给出的答案完全相同。我无法在这里发布代码,但我更新了我的答案,其中的灵感来自于@Eendjework@yesthisisjoe我在其中所做的一切都实现了(//您的代码)-你为什么这么想?请用你的新方法更新问题,以便我们可以帮助你解决新错误。@CodeDifferential的方法应该有效。检查你的
shuffled
函数。我打赌它不够通用,无法处理所有类型的元素请在下面检查我的答案,你的数组在索引12处没有元素。删除该line,它应该会起作用。@CodeDifferent非常感谢您,先生,请查看完整工作代码的编辑!您让我的日子过得愉快,先生。请用您的新方法更新问题,以便我们可以帮助您解决新错误。@CodeDifferent的方法应该会起作用。检查您的
shuffled
函数。我敢打赌,它不够通用,无法处理o元素f所有类型请检查下面的答案,您的数组在索引12处没有元素。删除该行,它应该可以工作。@CodeDifferent非常感谢,先生,请查看完整工作代码的编辑!您让我的一天过得很愉快,先生,非常感谢!现在它运行时没有错误,但它还将每个按钮设置为新图像-不仅仅是其中的3个。知道发生了什么吗?是,仅在前三个元素(索引0到2)上设置图像。因为你已经洗牌了数组,你只需要将它应用到三个按钮上。太好了,这就完成了!我应该勾选你的答案还是给Different的答案编码?@CodeDifferent的答案应该被标记为正确答案。很高兴它对你有效!非常感谢!现在它运行时没有错误,但它也会将每个按钮设置为新的图像-而不是o只有3个。知道发生了什么吗?是的,只在前三个元素上设置图像(索引0到2)。因为你已经洗牌了数组,你只需要将它应用到三个按钮上。太好了,成功了!我应该勾选你的答案还是给Different的答案编码?@CodeDifferent的答案应该被标记为正确答案。很高兴它对你有用!