Citas dobles de la tecla del diccionario de escape al hacer un ítem del diccionario println en Swift
(5)
Desde Swift 2.1 puede usar comillas dobles en la interpolación. println("current location is /(locations["current"])")
He estado jugando con Swift, y acabo de encontrar un problema. Tengo el siguiente diccionario en:
var locations:Dictionary<String,CLLocationCoordinate2D> = ["current":CLLocationCoordinate2D(latitude: lat, longitude: lng) ];
println("current locaition is /(locations["current"])")
pero el compilador se queja de las comillas dobles de la current
que representan la clave a en mi diccionario.
Intenté escapar con /
pero no era el camino correcto.
Aprecia cualquier ayuda.
He tenido este problema también con la interpolación de cadenas. La mejor solución que encontré fue simplemente dividirla en dos líneas, así:
let location = locations["current"]
println("current locaition is /(location)")
Puede ser un error con Swift. Por lo que encontré en los documentos, deberías poder usar / para escapar de las comillas.
Swift no acepta cotizaciones en / (). Por lo tanto, debe separar el código de una línea en dos.
Aquí hay un blog que muestra ejemplos para lectores chinos: http://tw.gigacircle.com/321945-1
Puede usar la concatenación de cadenas en lugar de la interpolación:
println("Some words " + dict["key"]! + " some more words.")
Solo importa los espacios alrededor de los signos +
.
ACTUALIZAR:
Otra cosa que puede hacer es usar los especificadores de formato de cadena de la misma forma en que se realizó en los días objetivo-c:
println( String(format: "Some words %@ some more words", dict["1"]!) )
Xcode 7.1+
Desde Xcode 7.1 beta 2, ahora podemos usar citas dentro de cadenas literales. De las notas de la versión:
Las expresiones interpoladas en cadenas ahora pueden contener literales de cadena. Por ejemplo, "Mi nombre es (atributos [" nombre "]!)" Ahora es una expresión válida. (14050788)
Xcode <7.1
No creo que puedas hacerlo de esa manera.
De los documentos
Las expresiones que se escriben dentro de paréntesis dentro de una cadena interpolada no pueden contener una comilla doble (") o una barra inclinada invertida (/) sin protección y no pueden contener un retorno de carro o avance de línea.
Tendría que usar
let someVar = dict["key"]
println("Some words /(someVar)")