我想在Swift中遍历数组,我需要知道何时到达最后一项。我正在使用 enumerateObjectsUsingBlock 。由于没有可选的完成块(如某些CoreAnimation方法),我假设 stop 参数表示结束点 - 这是正确的吗?
itemsArray.enumerateObjectsUsingBlock {
(object, index, stop) -> Void in
self.displayedItems.addObject(object as SpecialItem)
if stop == true {
println("the end.")
}
}
停止似乎属于 UnsafeMutablePointer 类型。因此,我不能简单地测试它是真/假或零。我怎么知道枚举何时完成?
答案 0 :(得分:4)
enumerateObjectsUsingBlock
同步执行 。枚举完成
当方法返回时。
stop
是布尔值的引用,可以将其设置为true
以停止进一步处理,
例如:
itemsArray.enumerateObjectsUsingBlock {
(object, index, stop) -> Void in
// process at most 5 elements:
if index == 4 {
stop.memory = true
}
}
在块内测试if stop == true
没有意义。
答案 1 :(得分:1)
获取块之前的计数,然后将索引与计数进行比较,以确定您何时处于最后一项。
如果您只想在枚举完成后执行代码,只需将代码紧跟在块代码之后。这个块不是异步的。
注意:Stop是一个变量,可以在块中设置以提前终止枚举。请参阅文档。