如何在" for in"中投射元组。 swift中的枚举?

时间:2014-08-05 09:22:48

标签: casting swift enumeration

我的枚举如下:

for (i, poi) in enumerate(self.pois) {
//
}

我想把i和poi演为(int,NSDictionary)

我尝试了很多东西,包括:

for (i, poi) in enumerate(self.pois) as [(int, NSDictionary)]

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这个小包装可能对您有所帮助:

let justAnArray: Array<(i: Int, poi: NSDictionary)> = Array()

// fill the array...

for temporaryTuple: (i: Int, poi: NSDictionary) in justAnArray {

    // enumerate through elements...

    println(temporaryTuple.i)
    println(temporaryTuple.poi)
}

typealias

typealias CustomTuple = (i: Int, poi: NSDictionary)

var justAnArray: Array<CustomTuple> = Array()

// fill the array ...

for temporaryTuple: CustomTuple in justAnArray {

    // enumerate through elements...

    println(temporaryTuple.i)
    println(temporaryTuple.poi)
}

答案 1 :(得分:0)

poi的当前类型是什么?如果poiDictionary,那么演员阵容很简单。

for (i, poi) in enumerate(self.pois.map { $0 as NSDictionary }) {
    println("\(i) : \(poi)")
}

或者你可以把演员表作为for循环的第一行。

for (i, poiDictionary) in enumerate(self.pois) {
    let poi = poiDictionary as NSDictionary
    println("\(i) : \(poi)")
}

如果poi是一个对象,那么您需要在poi上调用一个方法来获取NSDictionary

for (i, poi) in enumerate(self.pois.map { $0.toNSDictionary() }) {
    println("\(i) : \(poi)")
}