app中的ios- thread 1 exc_bad_instruction错误

时间:2016-03-28 05:11:45

标签: ios iphone arrays swift sorting

我正在编写一个模拟nba彩票的应用程序。我已经编写了代码来生成随机组合,并将它们分配给每个团队。

这是我模拟图纸并将草稿位置分配给每个团队的方法。 standingsArray是一个ObjectWrapper类型的Team项目数组,每个团队都有name,seed,wins,loss,draft position exc ...的值。所以基本上我正在做的是我有14个球并随机选择4个球,它们构成一个组合(顺序并不重要)。所以基本上总共有1001种可能的组合,但其中一种被抛弃。 (你可以忽略第一个while循环,因为它就是那里,所以没有选择抛出的组合)。根据记录为14个彩票队分配了许多组合(最差队伍为250,第二差队为199 ......)。我的方法中的参数standingsArray已经分配给每个团队的可能性数量。接下来,我从总体可能性中随机抽出4个球,并且使用该组合的团队获得第一个选择。但是因为选择的那个团队的所有组合都不能再次选择第二个选择,我必须删除所有这些组合,但这非常复杂,所以相反,我创建一个名为tempPossibilities的新数组,它为每个团队附加所有组合除了刚选择的那个,然后允许我生成一个新的组合供选择。

但是,我在这一行for j in 0...(standingsArray[i].possibilities?.count)!-1{收到错误它说错误的指令错误,我无法弄清楚为什么我收到此错误。还有什么不合理的是for循环工作,tempPossibilities数组完全填充了正确数量的组合(没有彩票团队),即使错误发生在for循环中? 代码如下:感谢任何帮助,谢谢,并抱歉真的很长段落

 func setDraftPositions(var standingsArray: [Team])->[Team]{
    var lottery: [Team]=[]
    var totalPossibilities: [[Int]]=combosOfLength(14, m: 4)
    var tempPossibilities = []
    var rand = Int(arc4random_uniform(UInt32(totalPossibilities.count)))
    var draw = totalPossibilities[rand]
    while (draw==(unused?.first)!) {
         rand = Int(arc4random_uniform(UInt32(totalPossibilities.count)))
         draw = totalPossibilities[rand]
    }

    s: for x in 0...13{
       for a in 0...(standingsArray[x].possibilities?.count)!-1{
         if(draw==standingsArray[x].possibilities![a]){
            standingsArray[x].setDraftingPosition(1)
            standingsArray[x].isLottery=true;
            lottery.append(standingsArray[x])
            for i in 0...(standingsArray.count-1) {
                if(standingsArray[i].firstName != standingsArray[x].firstName!) {
                    for j in 0... (standingsArray[i].possibilities?.count)!-1{ //ERROR is happening here
                        tempPossibilities.append(standingsArray[i].possibilities![j])
                    }
                }
            }
            standingsArray.removeAtIndex(x)
            break s;
        }
        }

    }

(对接下来的2个选秀权重复此操作)

1 个答案:

答案 0 :(得分:0)

试试这个:

for j in 0...(standingsArray[i].possibilities?.count)!-1{

应该写成这样:

for j in 0...(standingsArray[i].possibilities?.count)! - 1{

它需要适当的间距。