Tutorial Swift de iOS: aprende los conceptos básicos del lenguaje de programación
Swift es un lenguaje de programación muy fácil de aprender, ya que su sintaxis es sencilla de seguir. En este tutorial Swift de iOS, cubriremos algunos de los fundamentos del lenguaje Swift y veremos qué FÁCIL es desarrollar utilizando el lenguaje de programación Swift.
Antes de comenzar a construir aplicaciones para iOS, debemos comprender los conceptos básicos del lenguaje Swift y ver cómo funcionan, luego podremos crear las increíbles aplicaciones que necesitamos. En este tutorial y en los próximos tutoriales, utilizaremos Swift 3.
Tabla de contenidos
Definición de variables en Swift de iOS
Las variables se usan para almacenar valores que pueden ser manipulados posteriormente en tu programa.
Primero, vamos a crear un nuevo playgroud y guardarlo. Luego borra todo el contenido de este.
Para definir una variable, utiliza la palabra clave var seguida del nombre de la variable como se muestra a continuación:
var myvar
Puedes usar cualquier nombre para tu variable, la única condición es que no puedes comenzar el nombre de tu variable con un número:
var 2myvar
La definición anterior no es correcta, pero si puedes incluir números de la siguiente forma:
var myvar2
Utilizar el nombre de variable que desees, pero trata que sea descriptivo.
Para asignar un valor a esa variable, utiliza el signo igual:
var myvar = "Hello LikeGeeks Visitors, Welcome to iOS Swift Tutorial"
Interpolación de cadenas
Para imprimir una cadena e incluir un valor de un tipo diferente, puedes convertirla utilizando la interpolación de cadenas
\()
:
var var1 = 100 var var2 = "Hello, I have $\(var1) in my pocket"
No estás limitado a las variables de cadena de caracteres, existen diferentes tipos de variables que puedes definir en Swift.
var var1 = true var var2 = 50
La primera variable var1 es un tipo booleano. Puede utilizar verdadero o falso para los tipos booleanos.
La segunda variable var2 es un tipo entero o Int como lo nombra el lenguaje Swift.
En Swift, no necesitas escribir el tipo de variable y esto es debido a la inferencia de tipo.
Xcode detecta el tipo de variable en función del valor proporcionado, por lo que, si asignas un valor para una variable entre comillas, significa que la variable es una cadena de caracteres y si escribes un entero como un valor, eso significa que el tipo de variable es Int. etc,
Puedes definir explícitamente el tipo de variable de la siguiente forma:
var var1: String = "Welcome To Swift Tutorial" var var2: Bool = true var var3: Int = 50
No es necesario que definas explícitamente estos tipos, excepto en algunos casos, como veremos más adelante en publicaciones futuras.
Definición de constantes
Las constantes son como variables con una excepción, si toma un valor, no puede cambiarlo.
Para definir una constante, utiliza la palabra clave let:
let var1 = "Welcome To Swift Tutorial" let var2 = 100 let var3 = true
Si intentas cambiar cualquiera de estas constantes, Xcode te mostrará un error que dirá que cambies el let a var para que pueda ser modificado
let var1 = "Welcome To Swift Tutorial" let var2 = 100 let var3 = true var1 = "Hello"
Trabajando con arreglos
Los arreglos son un conjunto de valores, por lo que, en lugar de definir numerosas variables, puedes definir un arreglo que contenga todos esos valores.
Puedes definir una matriz de la siguiente forma:
var myarr = [10, 20, 30, 40, 50]
Además, puedes acceder a cualquier elemento del arreglo por el índice los cuales están basado en cero, es decir, el primer elemento tiene el índice de cero.
Para agregar elementos a la matriz, utiliza la función append de esta manera:
var myarr = [10, 20, 30, 40, 50] myarr.append(60)
Puedes verificar la cantidad de elementos de un arreglo así:
myarr.count
Además, puede eliminar elementos de la matriz usando la función de eliminar de esta manera:
var myarr = [10, 20, 30, 40, 50] myarr.remove(at:3)
El índice está basado en cero, entonces 3 significa el cuarto elemento.
Si necesita definir un arreglo vacío, puedes hacerlo de la siguiente forma:
var myarr = [String]()
Debes definir el tipo explícitamente que es una cadena de caracteres en este caso.
Definición de diccionarios
Los diccionarios son como arreglos, pero son pares clave-valor donde la clave debe ser única.
A veces es mejor utilizar un diccionario en lugar de un arreglo porque los valores son mucho más fáciles de encontrar.
Cuando se utilizan arreglos, los elementos se ordenan numéricamente, pero si necesita encontrar una información específica, el diccionario es mejor.
Puedes definir un diccionario de la siguiente manera:
var mydictionary = [String: String]()
Aquí definimos un diccionario con una clave de tipo de cadena y los valores correspondientes también son cadenas.
Para agregar elementos al diccionario:
mydictionary["OS"] = "Mac OS" mydictionary["Mobile"] = "iPhone"
Puedes hacer que el diccionario cuente así:
mydictionary.count
Además, puedes verificar si tu diccionario está vacío o no:
mydictionary.isEmpty
Si necesitas eliminar un elemento, puedes hacerlo de esta forma:
mydictionary["OS"] = nil
Y para iterar sobre los elementos, puede usar un ciclo for-in de esta manera:
for (mykey, myval) in mydictionary{ print(mykey + " ==> " + myval) }
Para borrar los elementos del diccionario, utiliza [:]
mydictionary = [:]
Ciclos While
Ahora sabes cómo crear arreglos y obtener cualquier elemento de este por su índice, es hora de iterar sobre esos elementos y hacer alguna acción con ellos.
Para iterar sobre los elementos de la matriz, puedes utilizar el ciclo while de la siguiente manera:
var myarr = [10, 20, 30, 40, 50] var x = 0 while x < myarr.count { myarr[x] = myarr[x] + 10 x = x + 1 } myarr
Como puedes ver en el resultado, los elementos de la matriz aumentaron en 10 para cada elemento.
Ciclos for-in
Otro tipo de ciclos son los for-in. Con estos ciclos, puedes iterar sobre un rango de valores.
Puedes escribirlo con la siguiente sintaxis:
var myarr = [10, 20, 30, 40, 50] for item in myarr { print(item) }
Al utilizar for-in, no necesitas un número entero para incrementar cada ciclo como se ha hecho en el ciclo while.
Sentencias If-else
Puede usar las instrucciones if para verificar una determinada condición como se muestra a continuación:
var myvar = 100 if myvar == 100 { print("The Value is 100") }
Puedes ver los resultados en la ventana de la consola en la parte inferior.
Además, puedes utilizar una sentencia else de la siguiente manera:
var myvar = 100 if myvar == 100 { print("The Value is 100") } else { print("The value not equal 100") }
Tal vez tienes múltiples condiciones, puedes usar else if:
var myvar = 100 if myvar == 100 { print("The Value is 100") } else if myvar > 100 { print("The value is greater than 100") } else { print("The value is less than 100") }
Operadores de comparación
En el ejemplo anterior, utilizamos los operadores de igualdad ==, sin embargo, hay otros operadores que puedes utilizar para comparar.
No es igual a: !=
Mayor que: >
Mayor que o igual que: > =
Menos que: <
Menor o igual que: < =
Puede utilizar cualquiera de ellos de la misma manera que en el ejemplo anterior.
Operaciones matemáticas
En Swift, hay muchos operadores que puede utilizar para realizar operaciones matemáticas.
Puedes realizar las cuatro operaciones aritméticas básicas (+, -, *, /):
var sum = 5 + 5 var diff = 10 - 5 var multiply = 5 * 5 var divid = 25 / 5
También, puedes utilizar usar el operador de módulo como en cualquier otro lenguaje de programación.
El operador de módulo se usa para obtener el resto al dividir dos números.
var remain = 20 % 3
Funciones en Swift
Cuando comienzas a codificar, encontrarás en algún momento líneas de código repetidas en todos tus archivos.
Puede agrupar esas líneas en una función, escribirla una vez y llamarla muchas veces en cualquier lugar.
Para definir una función, utiliza la palabra clave func de esta manera:
func myfunc(){ // Your code goes here }
Esta es la forma de función más simple. Puedes pasar entradas o parámetros a la función de esta manera:
func myfunc(var1: Int, var2: Int){ // Your code goes here }
En este ejemplo, definimos una función que toma dos parámetros de tipo Int.
Puedes definir el tipo de retorno de la siguiente manera:
func myfunc(var1: Int, var2: Int) -> Int { // Your code goes here }
Observa que el tipo de retorno es Int.
Hagamos una función que sume dos números y devuelva la suma.
func getsum(var1: Int, var2: Int) -> Int{ return var1+var2 }
Ahora que la función está lista, todo lo que tenemos que hacer es llamarla por su nombre:
getsum(var1: 10, var2: 15)
Como puedes ver en el panel derecho, el resultado es 25.
Intenta llamar a la función varias veces con diferentes entradas y verifica el resultado.
Programación orientada a objetos
POO o Programación Orientada a Objetos es un modelo muy popular para la programación donde se construye todo como un objeto como lo sería en la vida real.
Las clases son el componente principal de la Programación Orientada a Objetos que le permite crear un plano para tu objeto.
Crear una clase en Swift es muy fácil, puedes usar la palabra clave class para crearla:
class car { }
Puedes agregar variables para las propiedades o atributos de la clase de la siguiente forma:
class car { var speed = 400 var model = "B.M.W" var engine = "" func move() { } func stop() { } }
La clase que acabamos de crear es solo el modelo y para poder usarla, debes crear una instancia como se muestra a continuación:
let mycar = car()
Para crear una instancia de una clase en Swift, simplemente coloca paréntesis después de su nombre como se muestra arriba.
Después de crear la instancia, esta no tendrá valor, así que vamos a darle un valor.
mycar.engine = "power engine"
Además, puede llamar a las funciones de la clase de esta manera:
mycar.move() mycar.stop()
Puedes crear varias instancias y cada una de ellas tendrá sus propias propiedades.
let mycar = car() mycar.engine = "power engine" let brocar = car() brocar.engine = "bro engine" let wifecar = car() wifecar.engine = "wife engine"
Herencia de Objetos
Has creado una clase y hace bien su trabajo, ahora necesitas crear otra clase que realice un trabajo similar, pero con ciertas diferencias, así que en lugar de volver a escribir lo que has hecho en la primera clase, puedes heredar esa clase y agregar o modificar de acuerdo a tus necesidades.
Supongamos que nuestra clase de auto es la clase base o la clase principal:
class car { var speed = 400 var model = "B.M.W" var engine = "" func move() { print("Moving...") } func stop() { } }
Ahora vamos a crear una clase hija de auto.
class motocar: car { }
El código anterior hereda todas las propiedades y funciones de la clase de auto para la clase motocar y esto se debe al uso de los dos puntos.
Quizás necesites anular algunas funciones en tu nueva clase, puedes anularlas usando la palabra clave override:
class motocar: car { override func move() { print("Move fast....") } }
Si creas una instancia de clase motocar e intenta llamar a la función move, deberías ver el mensaje overriden (anulado).
Polimorfismo de objetos
Otro concepto importante en POO llamado polimorfismo que te permite tener distintas funciones con el mismo nombre, pero cada una de ellas con diferentes parámetros.
class book { func copy() { print("copying paper book") } func copy(path: String) { print("copying pdf book") } }
Aquí tenemos la clase libro que tiene dos funciones con el mismo nombre, pero si miras, notarás que los parámetros que se le pasan son diferentes.
La primera función copy no pasa nada mientras que la segunda pasa un parámetro de cadena.
Puedes tener muchas funciones con el mismo y cada una de ellas hace un trabajo totalmente diferente, pero la única condición es que DEBEN tener parámetros diferentes para cada una de ellas.
Como puedes ver, cuando creas una instancia de esa clase, muestra ambas versiones de la función copy.
¡¡Genial!!
En las publicaciones futuras, comenzaremos a explorar el entorno de Xcode y veremos cómo crear aplicaciones de iOS.
Espero que encuentres útil la publicación. Vuelve pronto.
Gracias.
Fundadora de LikeGeeks. Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.
todo bien hasta que mencionaste Polimorfismo de objetos, el concepto que das sobre polimorfismo esta herrado, lo estas confundiendo con sobre carga de metodos, Polimorfismo es la caracteristica de que un objeto tome distintas formas dependiendo de como fue inicializado: Ejemplo de polimorfismo:
class Person {
}
class Boy: Person {
}
class Girl: Person {
}
var person : Person
// la var person es del tipo Person pero puede tomar dos valores
person = Boy() // opcion 1
person = Girl() // opcion 2
// ambas opciones son validas
Así es