Swift Compiler: no puede subcribir un valor de tipo '' con un índice de tipo '()'

Guión:

PASO 1: Error PASO 2: included_print_no_error PASO 3: removed_print_no_error Problema resumido: empecé a trabajar con swift y sus conceptos básicos. Primero, intenté hacer una matriz ab con múltiples elementos tipificados diferentes (no estoy seguro de si debería llamarse una matriz). Luego intenté probar un valor de índice ab[2] .

Después de probar un valor de índice con éxito, hice un dictionary dictAbc donde utilicé diferentes índices ab[4] ab[6] apuntando a sus keys. Presentó un error como se menciona en el PASO 1.

Intenté limitar ab[2] en una function de printing como se menciona en el PASO 2, eliminó el error

Luego eliminé el método de printing e hice el código de STEP 3 igual que STEP 1, ahora no produce ningún error.

Código:

 import UIKit var str = "Hello, playground" var num: Float64 = 4.00000000000000000000000000 print("\(num)") let a = "Hello" let b = 12786 let c = a + String(b) var ab = [1221, 123123, 123123,123123,"asdasd", "adasdasd", 1263781.123] ab[2] var dictAbc = ["hello":ab[4], "let":ab[6]] dictAbc["let"] 

Captura de pantalla de Project Navigator

Project Navigator

Nota: Xcode Versión 7.0 (7A220)

¿Hay algún problema con el comstackdor de Playground?

Esto se debe a cómo funciona un Playground: trata de evaluar cada expresión tan pronto como terminas de escribir.

Entonces cuando escribes esto rápidamente:

 ab[1] 

Sin errores, pero si te tomas tu time y haces una pausa con el cursor dentro de los paréntesis:

 ab[] 

de hecho obtendrá el cannot subscript a value of type '[NSObject]' with an index of type '()' , pero este es solo un post de error temporal debido a la naturaleza "en time real" del Playground.

Si el error sigue ahí después de haber escrito el número de índice, entonces para que desaparezca, solo tiene que "despertar" al Patio agregando una línea vacía en algún lugar, agregando un espacio después de la expresión o agregando otro código, por supuesto. El Patio de juegos volverá a evaluar todo y eliminará el error falso.