我在Swift中尝试这样的事情但没有工作。 错误是:Type()不符合BooleanType
类型//visibleCollectionReusableHeaderViews is of type NSMapTable!
var enumerator: NSEnumerator = visibleCollectionReusableHeaderViews.objectEnumerator()
var myValue: AnyObject!
while (( myValue = enumerator.nextObject()))
{
}
我做错了什么?我不认为我理解如何迭代NSMapTable,甚至只是为了获得第一项。
答案 0 :(得分:13)
在Swift中,这是使用条件赋值完成的。
let enumerator = visibleCollectionReusableHeaderViews.objectEnumerator()
while let myValue: AnyObject = enumerator.nextObject() {
println(myValue)
}
请注意myValue的非可选类型。否则这个循环将是无限的,因为myValue继续接受nil对象。
答案 1 :(得分:2)
或更清晰,更短的方法(Swift 3):
for key in table.keyEnumerator() {
print(key)
}
for object in table.objectEnumerator() ?? NSEnumerator() {
print(object)
}
答案 2 :(得分:-1)
在 Swift 3 中,您可以使用for-in
循环遍历allObjects
属性:
for myValue in visibleCollectionReusableHeaderViews.allObjects {
// do stuff
}