No se puede subcribir un valor de tipo con un índice de tipo (String, Int) Swift 2

Estoy aprendiendo el desarrollo de iOS y recientemente he encontrado un problema al intentar manipular una matriz de tuplas.

Obtengo el siguiente post de error:

No se puede subcribir un valor de tipo '[(String, Int)]' con un índice de tipo '(String, Int)'

El código que lo genera es el siguiente:

justStrings.append(filtenetworkingRestraunts[i2].0) 

La function en su set es la siguiente:

  func filterBySliderValue () -> [String] { var filtenetworkingRestraunts: [(String, Int)] for var i = 0; i < restraunts.count; i++ { if restraunts[i].1 > Int(starSlider.value) { filtenetworkingRestraunts.append(restraunts[i]) } else {filtenetworkingRestraunts.append(("", 1))} } var justStrings: [String] var i2 = 0 for i2 in filtenetworkingRestraunts { justStrings.append(filtenetworkingRestraunts[i2].0) } return justStrings } 

Este es el restraunts de la matriz:

 var restraunts: [(String, Int)] = [("Dallas BBQ", 3), ("Chicken Express", 4), ("Starbucks", 5)] 

Gracias por adelantado.

En

 for i2 in filtenetworkingRestraunts { justStrings.append(filtenetworkingRestraunts[i2].0) } 

i2 no es un índice, pero itera sobre los elementos de la matriz, es decir, es una tupla (String, Int) . Lo que probablemente quise decir es

 for i2 in filtenetworkingRestraunts { justStrings.append(i2.0) } 

Observaciones adicionales:

  • La variable

     var i2 = 0 

    no se usa en absoluto, i2 en for-loop es una nueva variable cuyo ámbito está restringido al bucle.

  • Las variables filtenetworkingRestraunts y justStrings no se inicializan, por lo que esto debería ocasionar errores adicionales en el comstackdor.

  • Ambos loops se pueden replace por un enfoque más funcional usando filter y map :

     let filtenetworkingRestraunts = restraunts.filter { $0.1 > Int(starSlider.value) } let justStrings = filtenetworkingRestraunts.map { $0.0 } 

    ¿Cuál, por supuesto, podría combinarse para

     let justStrings = restraunts.filter { $0.1 > Int(starSlider.value) }.map { $0.0 }