如何在Swift中迭代NSMapTable中的所有项目

时间:2014-08-25 14:02:22

标签: ios swift

我在Swift中尝试这样的事情但没有工作。 错误是:Type()不符合BooleanType

类型
//visibleCollectionReusableHeaderViews is of type NSMapTable!

var enumerator: NSEnumerator = visibleCollectionReusableHeaderViews.objectEnumerator()
var myValue: AnyObject!

while (( myValue = enumerator.nextObject()))
{

}

我做错了什么?我不认为我理解如何迭代NSMapTable,甚至只是为了获得第一项。

3 个答案:

答案 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
}