Ios 致命错误:swift 2中的数组索引超出范围

Ios 致命错误:swift 2中的数组索引超出范围,ios,iphone,swift,swift2,Ios,Iphone,Swift,Swift2,我对GMSMarker数组有问题。当我运行代码时,它显示“致命错误:数组索引超出范围”。我将从谷歌地图中删除标记。我不明白为什么会出现这个错误。这很简单,但请帮我解决这个问题 var MarkerList = [GMSMarker]() if(MarkerList.count > 0){ for var j = 0 ; j < MarkerList.count ; j++ { dispatch_async(dispatch_get_m

我对GMSMarker数组有问题。当我运行代码时,它显示“致命错误:数组索引超出范围”。我将从谷歌地图中删除标记。我不明白为什么会出现这个错误。这很简单,但请帮我解决这个问题

var MarkerList = [GMSMarker]()

    if(MarkerList.count > 0){
        for var j = 0 ; j < MarkerList.count ; j++ {
            dispatch_async(dispatch_get_main_queue()) {
                self.MarkerList[j].map = nil    
            }
        }
    }
var MarkerList=[GMSMarker]()
如果(MarkerList.count>0){
对于var j=0;j
您应该在主线程上运行整个for循环。或者,您可以更进一步,在Swift2中使用新的forEach函数

之前:

if(MarkerList.count > 0){
    for var j = 0 ; j < MarkerList.count ; j++ {
        dispatch_async(dispatch_get_main_queue()) {
            self.MarkerList[j].map = nil    
        }
    }
}
dispatch_async(dispatch_get_main_queue()) {
    MarkerList.forEach { $0.map = nil }
}

您是否尝试打印一个日志,精确说明每次迭代的数组大小和当前索引(j)?删除主队列,为什么在主队列上将其设置为nil。?UI相关更新应该在MainQueue上完成,您从哪个队列运行代码?