iphone - true - La forma correcta de convertir el valor BOOL en INT?
php boolean to int (5)
Cada vez que intenté convertir el valor de BOOL en int. El valor INT muestra -8 para True y 0 para False. Lo ideal sería que devuelva 1 verdadero.
He intentado todas las formas posibles de conversión, como
int val=Info.isattachementDownloadable;
int val=[[NSString stringWithFormat:@"%d", Info.isattachementDownloadable] intValue];
int val=(int)Info.isattachementDownloadable;
donde Info.isattachementDownloadable
return BOOL
En todos los sentidos, muestra -8 para VERDADERO.
Cualquier sugerencia ?
Es mucho más rápido hacerlo así:
BOOL myBool = YES;
int myInt = (myBool ? 1 : 0);
myInt
será 1 si myBool
es SÍ y 0 si myBool
es NO.
BOOL myBool;
int myInt;
if (myBool) myInt = 1;
else myInt = 0;
Tal vez eso ayude (pensé que no sé por qué podría ser necesario en primer lugar)
NSInteger i = @(YES).integerValue;
Espero que te ayude
Siempre es posible usar el contenedor orientado a objetos alrededor de primitivas numéricas (por ejemplo, C''s int). Entonces, ¿estoy respondiendo la pregunta? tanto sí como no dependiendo de tu punto de vista. Sin embargo, esto es lo que prefiero usar cuando uso BOOL como entrada:
NSNumber *numval = [NSNumber numberWithBool:Info.isattachementDownloadable];
Y si realmente necesita usar el tipo de datos primitivo:
int val = [numval intValue];
Solo puede asignar el valor BOOL a int ya que YES y NO son solo accesos directos para 1 y 0. También puede realizar operaciones matemáticas en BOOL. FYI, BOOL incluso puede contener valores desde -128 hasta 127 ya que solo son typedefs para chars firmados.
BOOL someBool = YES;
int intFromBool = someBool;
NSLog(@"%d", intFromBool);
intFromBool -= YES;
NSLog(@"%d", intFromBool);
Referencia: https://www.bignerdranch.com/blog/bools-sharp-corners/