Home » Trucos » Truco de Swift: convertir valores a cadena
Trucos de Swift

Truco de Swift: convertir valores a cadena

Una de las cosas que se realizan más comúnmente en cualquier lenguaje, es convertir valores. De número a cadena, de flotante a entero, de entero a fecha… Pero sin duda una de las más comunes a realizar es la conversión de cualquier valor a una cadena, con el fin de poder ver y/o mostrar en un programa dicho valor sin tener que acudir al debugger, sino de una manera cómoda.

O ni siquiera eso: un simple label de puntuación, donde este se almacene en un dato entero, necesitaría también de esto: una forma de unir una cadena a un valor que no lo es.

Los conocedores de Objective-C saben que existen una herramienta mágica para eso: StringWithFormat. Este no es más que un inicializador del tipo NSString (el que maneja las cadenas en este lenguaje) que permite poner una cadena con una serie de modificadores que luego sustituimos por argumentos en tiempo de ejecución. Si queremos una cadena con un entero, ponemos un %d en la posición donde queramos dicho entero dentro de la cadena y luego ponemos el entero como parámetro:

Suponiendo que tuviéramos los puntos en la variable entera puntos, esta instrucción grabaría la cadena con el entero convertido dentro de la cadena points. Pero, ¿cómo hacemos eso en Swift? Pues bien, tenemos una buena noticia y es que Apple ha tenido en cuenta todas las nomenclaturas existentes para formateado de datos y parámetros que ya poseía el Objective-C. De hecho, el sistema es el mismo: usar el constructor de un String, pero esta vez sin poner el nombre en sí.

Pueden ponerse tantos argumentos como se quiera y diferentes máscaras. Solo hay que especificar la variable format con nuestra cadena y seguido por comas tantos parámetros como hayas incluido en la cadena. Gracias a que Swift no tiene nombres en los constructores de las clases, si no que estos se identifican por los parámetros que reciben, nos permite mayor flexibilidad a la hora de trabajar con dichos constructores.

Estos son algunos de los parámetros más comunes que Swift admite a la hora de usar la conversión de cadenas:

ParámetroSignificado
%@Cualquier variable definida como objeto, proceda de Swift o de Objective-C
%%Una cadena de un solo carácter
%d, %DNúmero entero de 32 bits con signo
%u, %UNúmero entero de 32 bits sin signo
%x, %XNúmero entero de 32 bits representado en hexadecimal. %x en minúscula, %X en mayúscula
%fNúmero flotante de 64 bits (también denominado como tipo Double)
%FNúmero flotante de 64 bits representado con notación decimal
%e, %ENúmero flotante de 64 bits con dato de exponente, con %e en minúscula y %E en mayúscula

Hay otros tantos, pero son mucho más específicos y en realidad es difícil que usemos más que estos. El resto suelen ser más habituales también por compatibilidades específicas con tipos de C o C++. En Swift, estos son los más comunes.

También podemos usar formatos determinados, por ejemplo, un número de decimales para un número flotante. Si usamos el % unido a una precisión y a la f, podemos decirle que nos muestre el número flotante con, por ejemplo, 2 cifras decimales: %.2f nos daría la representación del número como cadena pero con dos decimales.

Interpolación de cadenas

No obstante, esta forma es muy “de la vieja escuela” en tanto usamos una adaptación de una forma de funcionar con Objective-C dentro de Swift. La otra manera de convertir valores en cadenas, es usar directamente la interpolación de cadenas que incorpora Swift y que vimos en la primera lección del curso. Algo tan simple como:

Por ejemplo, esta función es muy útil si queremos convertir puntos en coordenadas en formato String.

El tipo CGPoint es peliagudo para usarlo libremente dentro de Swift, pues no es un tipo nativo. De esta forma, podemos convertir los valores en cadenas y luego con el constructor de CGPoint específico para valores de cadenas, traer de vuelta el valor:

La interpolación de cadenas tiene, no obstante, el problema que no permite usar formatos específicos como el número de decimales de un flotante a representar. Este formato se elige automáticamente en función de la localización de nuestro sistema o del sistema iOS donde se ejecute.

Sin duda, funciones que seguro usaréis mucho. Practicad con ellas y si tenéis cualquier duda ya sabéis dónde acudir y hasta entonces: Good Apple Coding.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Stocks Apps

Cómo se borran las apps preinstaladas en iOS 10 (o no)

Todos lo hemos querido alguna vez: borrar algunas de las apps preinstaladas en iOS. En iOS 10 se podrá, pero no exactamente. Te explicamos qué hace el sistema para quitarlas y el proceso de restauración posterior (si queremos recuperarlas). Igualmente, te decimos cuáles son las que puedes quitar y la explicación técnica del método elegido por Apple.