Это похоже на то, что вы инициализируете объект 'before' как массив, а затем присваиваете ему как словарь. (Также, как вы назначаете это выглядит, как он может сделать с подстройке.
[Bool] = Массив BOOLS [[Bool]] = Массив Массив BOOLS
присвоить выше вам нужно . создать [Bool] массив с вашим результатом, и добавить его к вышеуказанному объекту
так как кажется, что вы хотите использовать до того, как словарь, то вы можете просто изменить Инициализатор быть:
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]
}
}
}
Тогда вы успешно сможете вызвать значения с помощью
//To call before[1][3]
if let before = before[1] {
print(before[3])
}
Если я не прав, и вы хотите, чтобы работать как массив Массив BOOLS, то вам необходимо изменить, как вы добавить свои результаты «до» массива:
- Во-первых Генерировать «значение X» массив BOOLS
- Append это Bool массив на «до» массива
var before = [[Bool]]()
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])
Ваш массив пуст. В индексе 'x' ничего нет. – emlai
Возможный дубликат [Ошибка: «индекс массива вне диапазона» в многомерном массиве] (http://stackoverflow.com/questions/32650268/error-array-index-out-of-range-in-multidimensional-array) – Hamish
Ответили ниже ответы на ваш вопрос? –