Правильный способ преобразования значения BOOL в INT?
каждый раз, когда я пытался преобразовать значение BOOL в int. Значение INT показывает -8 для True и 0 для False. В идеале он должен возвращать 1 для true.
Я пробовал все возможные способы преобразования, такие как
int val=Info.isattachementDownloadable;
int val=[[NSString stringWithFormat:@"%d", Info.isattachementDownloadable] intValue];
int val=(int)Info.isattachementDownloadable;
здесь Info.isattachementDownloadable
вернуть BOOL
во всех отношениях его отображение -8 для TRUE.
любое предложение ?
5 ответов
может быть, это поможет (думал, что я не знаю, почему это может понадобиться в первую очередь)
NSInteger i = @(YES).integerValue;
надеюсь, что это поможет вам.
гораздо быстрее сделать это так:
BOOL myBool = YES;
int myInt = (myBool ? 1 : 0);
myInt
будет 1, Если myBool
"да", и 0, если myBool
нет.
всегда можно использовать объектно-ориентированную оболочку вокруг числовых примитивов (например, с инт). Так я отвечаю на вопрос? и да и нет в зависимости от вашей точки зрения. Однако вот что я предпочитаю использовать при использовании BOOL в качестве ввода:
NSNumber *numval = [NSNumber numberWithBool:Info.isattachementDownloadable];
и если вам действительно нужно использовать примитивный тип данных:
int val = [numval intValue];
вы можете просто назначить значение BOOL для int, так как да и нет-это просто ярлыки для 1 и 0. Вы также можете выполнять математические операции на BOOLs. FYI, BOOLs могут даже содержать значения от -128 до 127, так как они просто typedefs для подписанных символов.
BOOL someBool = YES;
int intFromBool = someBool;
NSLog(@"%d", intFromBool);
intFromBool -= YES;
NSLog(@"%d", intFromBool);
ссылка:https://www.bignerdranch.com/blog/bools-sharp-corners/