Si hallas algún error en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.
Solución:
No, existe y nunca ha existido una opción incorporada explícita para la conversión de Int
a Bool
, vea la referencia de lenguaje para Bool
para detalles.
Todavía existe, sin embargo, un inicializador por NSNumber
. La diferencia es que el puente implícito entre el tipo numérico de Swift y NSNumber
se ha eliminado en Swift 3 (que anteriormente permitía lo que parecía ser explícito Bool
por Int
inicialización). Todavía puede acceder a esto por NSNumber
inicializador realizando explícitamente la conversión de Int
a NSNumber
:
let number = 1
let result = Bool(number as NSNumber)
print(result) // true
Como @Hamish escribe en su comentario a continuación: si dejamos el tema de los inicializadores y solo nos enfocamos en el resultado final (crear una instancia de un Bool
instancia dado el valor de un Int
ejemplo) podemos simplemente hacer uso de la !=
operador de Int
valores (en concreto, el operador con firma func !=(lhs: Int, rhs: Int) -> Bool
), una generalización fácilmente alcanzable usando el !=
enfoque del operador:
let number = -1
let result = number != 0
print(result) // true
Al igual que usted mismo, así como @JAL describe en su respuesta, podría construir su propia Bool
por Int
inicializador, pero también podría considerar generalizar esto para cualquier tipo que se ajuste a la Integer
protocolo:
extension Bool
init(_ num: T)
self.init(num != 0)
/* example usage */
let num1: Int8 = -1
let num2: Int = 3
let num3: UInt64 = 0
// ....
let result1 = Bool(num1) // true
let result2 = Bool(num2) // true
let result3 = Bool(num3) // false
rápido 4
extension Int
var boolValue: Bool return self != 0
rápido 3
extension Integer
var boolValue: Bool return self != 0
Uso
let number = 2
print(number.boolValue)
let items = ["1"]
print(items.count.boolValue)
No existe un inicializador booleano que tome una Int
, solo NSNumber
. Anteriormente, el Int
estaba implícitamente conectado a NSNumber
a través de Foundation, pero eso se eliminó en Swift 3.
Puedes hacer algo como:
let result = Bool(number as NSNumber)
O bien, puede ampliar Bool
y cree un inicio personalizado que tome un Int:
extension Bool
init(_ number: Int)
self.init(number as NSNumber)
Si te animas, eres capaz de dejar un escrito acerca de qué te ha gustado de este ensayo.