【发布时间】:2016-11-25 17:09:56
【问题描述】:
我正在尝试在地图上一个接一个地绘制位置,每个绘制位置之间有 1 秒的间隔,但它并不完全有效。到目前为止,这是我所拥有的:
@IBAction func playButtonPressed(_ sender: Any) {
var index = 0.0
var i = 0
var j = 0
while i < sites.count {
while j < sites[i].count {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0*index) {
self.plot(day:i,site:j)
}
j += 1
index += 1
}
j = 0
i += 1
}
}
func plot(day:Int,site:Int) {
for letter in glossary {
let siteToPlot = sites[day][site]
if let location = letter[siteToPlot] {
setUpMap(name: location.name!, lat: location.lat!, long: location.long!)
}
}
}
按照我的设置方式,for 循环中的每个项目都会有一个在 DispatchQueue.main.asyncAfter 中调用的方法,但每个项目都会在一秒钟后调度。首先是 0 秒后,然后是 1,然后是 2,等等。
似乎没有保存绘图函数参数,但是第一次调用绘图函数时,日期和站点值是 9 和 0,它们是循环完成时的值。
【问题讨论】:
标签: swift asynchronous dispatch