variable true is_bool float convertir check cast bolean iphone objective-c int boolean type-conversion

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/