Swift Academy · Lección

Conversión de tipos: is, as?, as! y as

Compruebe y convierta tipos de forma segura mediante los operadores de conversión de Swift.

Lección 3 de 413 pasos

Conversión de tipos: is, as?, as! y as es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué es la conversión de tipos?

La conversión de tipos permite comprobar o convertir una instancia a otra clase dentro de su jerarquía.

class Animal { var name: String = "Animal" }
class Dog: Animal { func bark() { print("Woof") } }
let a: Animal = Dog()
print(a.name)

El operador is

Utilice is para comprobar si una instancia pertenece a una subclase determinada.

let a: Animal = Dog()
if a is Dog {
  print("It's a dog")
}

Conversión descendente con as?

as? intenta realizar una conversión descendente y devuelve un Optional. Si falla, el resultado es nil.

let a: Animal = Dog()
if let dog = a as? Dog {
  dog.bark()
} else {
  print("Not a dog")
}

Conversión descendente con as!

as! realiza una conversión forzada a un subtipo. Úselo solo cuando tenga la certeza del tipo; si es incorrecto, provoca un error en tiempo de ejecución.

let a: Animal = Dog()
let dog = a as! Dog
dog.bark()

Conversión ascendente con as

La conversión de una subclase a una superclase siempre se realiza correctamente y utiliza as.

let dog = Dog()
let animal = dog as Animal
print(animal.name)

Conversión de tipos en colecciones

Los arrays de tipos mixtos declarados como [Any] requieren una conversión para utilizar un comportamiento específico.

let items: [Any] = [1, "hello", Dog()]
for item in items {
  if let d = item as? Dog { d.bark() }
  if let s = item as? String { print(s) }
}

Conversión de tipos con AnyObject

AnyObject representa cualquier instancia de clase. Utilice as? para extraer el tipo concreto.

let objs: [AnyObject] = [Dog(), Dog()]
for obj in objs {
  if let d = obj as? Dog { d.bark() }
}

Conversión de tipos de protocolo

Puede convertir entre tipos de protocolo y tipos concretos utilizando los mismos operadores.

protocol Runnable { func run() }
class Cat: Animal, Runnable { func run() { print("Cat runs") } }
let r: Runnable = Cat()
if let cat = r as? Cat { print(cat.name) }

Coincidencia de patrones con is en switch

La sentencia switch de Swift puede comprobar el tipo mediante el patrón is.

let value: Any = 42
switch value {
case is Int: print("Integer")
case is String: print("String")
default: print("Other")
}

Patrones as? en switch

Combine switch con let x as Type para comprobar y vincular en un solo paso.

let value: Any = "Swift"
switch value {
case let s as String: print("String: \(s)")
case let i as Int: print("Int: \(i)")
default: break
}

Prácticas recomendadas para conversiones seguras

Prefiera siempre as? a as! para evitar errores en tiempo de ejecución en el código de producción.

func describe(_ obj: AnyObject) {
  if let dog = obj as? Dog { dog.bark(); return }
  print("Unknown type")
}

Comprobación rápida

¿Qué operador devuelve un Optional al realizar una conversión descendente?

Resumen de la lección

Conversión de tipos en Swift: is comprueba el tipo, as? realiza una conversión descendente segura a Optional, as! realiza una conversión descendente forzada y as realiza una conversión ascendente. Prefiera as? en el código de producción.

Gratis para empezar

Aprende Swift con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
122
Lecciones
409

Preguntas frecuentes

¿La lección «Conversión de tipos: is, as?, as! y as» es gratis?

Sí — el texto completo de «Conversión de tipos: is, as?, as! y as» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Conversión de tipos: is, as?, as! y as»?

Compruebe y convierta tipos de forma segura mediante los operadores de conversión de Swift. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Conversión de tipos: is, as?, as! y as»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Herencia de clases y la palabra clave super
  2. override, final y prevención de la herencia
  3. Conversión de tipos: is, as?, as! y as
  4. Deinicializadores y ciclo de vida de la memoria
← Volver a Swift Academy