Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Swift 致命错误:索引超出范围。。。为什么这段代码不能编译?_Swift_Multidimensional Array_Fatal Error_Conways Game Of Life - Fatal编程技术网

Swift 致命错误:索引超出范围。。。为什么这段代码不能编译?

Swift 致命错误:索引超出范围。。。为什么这段代码不能编译?,swift,multidimensional-array,fatal-error,conways-game-of-life,Swift,Multidimensional Array,Fatal Error,Conways Game Of Life,我是swift的新手,正在尝试建立一个10x10的2D布尔数组,其中三分之一为真,其余为假。由于某种原因,它不会运行,而是给了我一个很长的错误,原因是:EXC_BAD_指令。有人能帮我找出我做错了什么吗。谢谢 var before = [[Bool]]() for x in 0..<10 { for y in 0..<10 { if arc4random_uniform(3) == 1 { before[x][y] = true } else

我是swift的新手,正在尝试建立一个10x10的2D布尔数组,其中三分之一为真,其余为假。由于某种原因,它不会运行,而是给了我一个很长的错误,原因是:EXC_BAD_指令。有人能帮我找出我做错了什么吗。谢谢

var before = [[Bool]]()

for x in 0..<10 {
for y in 0..<10 {
    if arc4random_uniform(3) == 1 {
        before[x][y] = true
    }
    else {
        before[x][y] = false
    }
}
}
var-before=[[Bool]]()

对于0..中的x,看起来您正在将“before”对象初始化为数组,然后将其指定为字典。(另外,您分配它的方式看起来可以通过调整来实现

[Bool]=Bool数组 [[Bool]]=Bool数组的数组

要分配给上面的对象,您需要使用结果创建一个[Bool]数组,并将其附加到上面的对象

因为您似乎想将Prefore用作字典,所以您可以将初始值设定项更改为:

var before = [Int:[Int:Bool]]()
并将您的功能更改为:

for x in 0..<10 {
    for y in 0..<10 {
        let test = x
        if arc4random_uniform(3) == 1 {
            before[x] = [y:true]
        }
        else {
            before[x] = [y:false]
        }
    }
}
如果我错了,并且您希望它作为布尔数组工作,那么您需要将结果添加到“before”数组的方式更改为:

  • 首先生成布尔的“X值”数组
  • 将此布尔数组附加到“before”数组
  • var-before=[[Bool]]()


    对于0中的x..您将得到致命错误:索引超出范围,因为您无法在Swift中索引到空数组(因为即使数组索引
    0
    也不存在)

    一种解决方案是使用嵌套数组初始值设定项初始化二维数组。如果将其初始化为all
    false
    ,则只需设置
    true
    值:

    var before = [[Bool]](count: 10, repeatedValue: [Bool](count: 10, repeatedValue: false))
    
    for x in 0..<10 {
        for y in 0..<10 {
            if arc4random_uniform(3) == 1 {
                before[x][y] = true
            }
        }
    }
    
    var-before=[[Bool]](计数:10,repeatedValue:[Bool](计数:10,repeatedValue:false))
    
    对于0中的x..您的数组为空。索引
    x
    中没有任何内容。下面的答案是否回答了您的问题?
    for x in 0..<10 {
        var yArray = [Bool]()
        for y in 0..<10 {
            if arc4random_uniform(3) == 1 {
               yArray.append(true) // Array of Bools
            }
            else {
                yArray.append(false)
            }
        }
        before.append(yArray)
    
    }
    //To call before[1][3]
    print(before[1][3])
    
    var before = [[Bool]](count: 10, repeatedValue: [Bool](count: 10, repeatedValue: false))
    
    for x in 0..<10 {
        for y in 0..<10 {
            if arc4random_uniform(3) == 1 {
                before[x][y] = true
            }
        }
    }