我不斷收到fatal error: Index out of range
錯誤。我的數組應該清楚地包含下面圖像中的元素,但它是空的。一直試圖調試它幾個小時,我不太確定是什麼原因造成的。請參閱下面的圖片和代碼。陣列清空時,它應該明確包含元素
var topTest = [t2, t4, t8, t7, t2, t5, t8, t6 ]
for (index, point) in topTest.enumerate() {
spritesPath.append(point)
if index < topTest.count - 1 {
var previousArrayIndex = (index - 1)%topTest.count
if previousArrayIndex == -1 {
previousArrayIndex += topTest.count
}
var nextArrayIndex = (index + 1)%topTest.count
var firstIndex = topPositions.indexOf(point)
var secondIndex = topPositions.indexOf(topTest[nextArrayIndex])
var firstArray = top[firstIndex!]
var secondArray = top[secondIndex!]
var middleIndex1 = 0
var middleArray1 = [CGPoint]()
var middleRandomArrayLength1 : UInt32 = 0
var middleRandomPointIndex1 = 0
var middleIndex2 = 0
var middleArray2 = [CGPoint]()
var middleRandomArrayLength2 : UInt32 = 0
var middleRandomPointIndex2 = 0
if point.x > topTest[nextArrayIndex].x {
if point.x > topTest[previousArrayIndex].x {
let rightPositionsX = rightPositions.map({ $0.x })
middleArray1 = firstArray.filter({rightPositionsX.contains($0.x)})
middleRandomArrayLength1 = UInt32(middleArray1.count)
middleRandomPointIndex1 = Int(arc4random_uniform(middleRandomArrayLength1))
spritesPath.append(middleArray1[middleRandomPointIndex1])
middleIndex1 = rightPositions.indexOf(middleArray1[middleRandomPointIndex1])!
middleArray1 = right[middleIndex1]
let middleArray1X = middleArray1.map({ $0.x })
var midArray2 = secondArray.filter({middleArray1X.contains($0.x)})
midArray2 = midArray2.filter({element in point.x > element.x && topTest[nextArrayIndex].x < element.x })
middleRandomArrayLength2 = UInt32(midArray2.count)
middleRandomPointIndex2 = Int(arc4random_uniform(middleRandomArrayLength2))
spritesPath.append(middleArray2[middleRandomPointIndex2])
}
else{
let secondArrayX = secondArray.map({ $0.x })
middleArray1 = firstArray.filter({secondArrayX.contains($0.x)})
middleArray1 = middleArray1.filter({element in point.x > element.x && topTest[nextArrayIndex].x < element.x })
middleRandomArrayLength1 = UInt32(middleArray1.count)
middleRandomPointIndex1 = Int(arc4random_uniform(middleRandomArrayLength1))
spritesPath.append(middleArray1[middleRandomPointIndex1])
}
}
else
{
if point.x < topTest[previousArrayIndex].x {
let leftPositionsX = leftPositions.map({ $0.x })
middleArray1 = firstArray.filter({leftPositionsX.contains($0.x)})
middleRandomArrayLength1 = UInt32(middleArray1.count)
middleRandomPointIndex1 = Int(arc4random_uniform(middleRandomArrayLength1))
spritesPath.append(middleArray1[middleRandomPointIndex1])
middleIndex1 = leftPositions.indexOf(middleArray1[middleRandomPointIndex1])!
middleArray1 = left[middleIndex1]
let middleArray1X = middleArray1.map({ $0.x })
var midArray2 = secondArray.filter({middleArray1X.contains($0.x)})
midArray2 = midArray2.filter({element in point.x < element.x && topTest[nextArrayIndex].x > element.x })
middleRandomArrayLength2 = UInt32(midArray2.count)
middleRandomPointIndex2 = Int(arc4random_uniform(middleRandomArrayLength2))
spritesPath.append(midArray2[middleRandomPointIndex2])
}
else {
let secondArrayX = secondArray.map({ $0.x })
middleArray1 = firstArray.filter({secondArrayX.contains($0.x)})
middleArray1 = middleArray1.filter({element in point.x < element.x && topTest[nextArrayIndex].x > element.x })
middleRandomArrayLength1 = UInt32(middleArray1.count)
middleRandomPointIndex1 = Int(arc4random_uniform(middleRandomArrayLength1))
spritesPath.append(middleArray1[middleRandomPointIndex1])
}
}
}
}
以下圖片顯示的是secondArray
和middleArray
包含類似的內容,不應該是空的
您應該在顯示錯誤之前去掉所有不相關的代碼,並且最好使樣例代碼可以粘貼到操場上並運行。這會讓其他人更容易看到發生了什麼。 –