escapar de las comillas dobles de la clave del diccionario al realizar el elemento del diccionario println en Swift

StackOverflow https://stackoverflow.com//questions/24024754

  •  21-12-2019
  •  | 
  •  

Pregunta

He estado jugando con Swift y encontré 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 current que representan la clave a en mi diccionario.

Intenté escapar con \ pero no fue el camino correcto.

Agradezco cualquier ayuda.

¿Fue útil?

Solución

Xcode 7.1+

Desde Xcode 7.1 beta 2, ahora podemos usar comillas dentro de cadenas literales.De las notas de la versión:

Las expresiones interpoladas en cadenas ahora pueden contener cadenas literales.Por ejemplo, "Mi nombre es (atributos["nombre"]!)" ahora es una expresión válida.(14050788)

Código X <7.1

No creo que puedas hacerlo de esa manera.

Desde el documentos

Las expresiones que escribe entre paréntesis dentro de una cadena interpolada no pueden contener comillas dobles sin escape (") o barra invertida (\), y no pueden contener un retorno de carro o un avance de línea.

Tendrías que usar

let someVar = dict["key"]
println("Some words \(someVar)")

Otros consejos

Puedes usar la concatenación de cadenas en lugar de la interpolación:

println("Some words " + dict["key"]! + " some more words.")

Sólo tenga en cuenta los espacios alrededor del + señales.

ACTUALIZAR:

Otra cosa que puedes hacer es usar especificadores de formato de cadena de la misma manera que se hacía en los días de Objective-C:

println( String(format: "Some words %@ some more words", dict["1"]!) )

También tuve este problema con la interpolación de cadenas.La mejor solución que encontré fue dividirlo 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 comillas en \().Por lo tanto, debes separar el código de una línea en dos.

Aquí hay un blog que muestra un ejemplo para lectores chinos:http://tw.gigacircle.com/321945-1

Desde Swift 2.1 puedes usar comillas dobles en la interpolación. println("current location is \(locations["current"])")

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top