No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

18 Días
14 Hrs
48 Min
8 Seg

Force unwrapping de una variable optional

17/22
Recursos

Aportes 19

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

También se podría validar e imprimir el valor nil con un operador ternario, para simplificar el if

por ejemplo

print(convertedAge != nil ? convertedAge! : "Valor nulo")

Yo lo de el force unwrapping lo veo como un cofre que no sabes que contiene, pero intuyes que contiene un Int, entonces con la llave (en este caso una exclamación) abres el cofre para confirmarlo.

definitivamente uno de los mejores maestro de Platzi

No entiendo Nada :S

print(miVariable ?? "Valor default")

Solo usar el Unwrapping solo si estamos seguros que el valor no puede ser Nil

let age : string?
age = “32”
let convertAge = int(age)
print (convertAge!) //aqui estoy aplicando fuerza bruta a la variable, en otras palabras estoy forzando a indicarle que es una variable entera.Si Age no tuviera valor<nil> se generaria un error y rompimiento del codigo debido a que no es viable aplicar fuerza bruta a una variable nil, por eso es buena practica rodear a una variable que se le haya aplicado force unwrapping con un if validando si es nil
if age =! nil { print (“no es nula /(convertAge!)”)} else{print(“es nula”)}

puedes confirmar si trae algo de la siguiente manera:

if let age = convertedAge {
print(age)
}
es una manera de hacer la comparación y también es muy legible

/*
Force unwrapping = si hay o no hay valor
*/
//Checar si una variable esta o no esta
let possibleAge = "31"
let convertedAge = Int(possibleAge)//Int?

//Siempre usar condicional para verificar que el valor no sea nil
if convertedAge != nil{
//Si se está seguro que el valor no es nil, entonces se agrega ! al fila de la variable con posible Int? para que por fuerza se convierta el valor optional a entero
	print("La edad del usuario no es nula: \(convertedAge!)")
}else{
	print("La edad del usuario es nula")
}

force unwrapping es establecer en una optional un valor definido mediante la utilización de la variable acompañado de !

Encuentro algo familiar con NullSafety que encontramos en Dart

Dejé esta respuesta anteriormente, la vuelvo a publicar como comentario por si a alguien le ayuda. Paso 1. Estás esperando un valor con un tipo de dato conocido "La variable convertedAge contiene un valor?????" (Haces uso del "?") Paso 2. Compruebas que no sea un nil, es decir que realmente te llegó el dato que esperabas, en este caso un entero (42) Paso 3. Aún así el sistema te dice "Puede que sea un valor o puede que no sea un valor", pero como tu lo comprobaste en el if que ya es un entero simplemente le indicas "No te preocupes!!!!! esta variable ya contiene un valor !!!!!!!!" (Haces uso del !). Traté de hacer una analogía de como se vería a nivel lenguaje humano
En versiones nuevas ya no muestra el Optional(31) simplemente lo ignora, hasta que haces el force unwrapping

No es muy recomendable utilizar Force unwrapping, me parece que en un programa un poco grande puede haber crashes por todos lados si se fuerza un valor que ha sido declarado como opcional, se debe utilizar para casos muy concretos.

Lo aconsejable luego de escuchar al profesor Juan, mientras se va agarrando el hilo, es hacer una validacion antes de hacer uso del Force Unwrapping!

🤔 Es decir, utilizamos un force unwrapping cuando estamos completamente seguros de que existe un valor dentro del optional (que no es ni)

//-------Force unwrapping-----//
//metodo transformar la variable en cuestion a un tipo de dato no nulo

//Hay que comprobar si la variable que vamos a usar no es nula para continuar
if convertedVar != nil {
    print("la variable no es nula: convertedVar")
}

//el force unwrapping se logra con :"!" despues de la variable para transformarla
print("el valor transformado con force unwrapping de la variable convertedVar es: \(convertedVar!)")//se cambia a valor no optional

el force unwrapping también presente en Rust (.unwrap()) se podría usar para prototipar de manera rápida un solución y luego pasarlo a un mejor manejo como el optional binding (if let x=optional { } ).

También cuando los el valor contenido siempre existirá, como cuando no viene de un input ó respuesta de servidor, pero uno nunca está 100% seguro del cambio de tipo de dato y si algún otro dev modifique el valor previamente al unwrapping 😦

dejo una presentación que habla de unwrap en rust donde el concepto es similar.

//FORCE UNWRAPPING DE UNA VARIABLE OPCIONAL
if convertedAge != nil{
    print("La edad del usuario no es nula \(convertedAge!)") //Conversion forzada
}else{
    print("La edad del usuario es nula \(convertedAge)")
}