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