Правильный способ конвертировать значение BOOL в INT? - PullRequest
13 голосов
/ 21 июля 2011

Каждый раз, когда я пытался конвертировать значение 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 для ИСТИНА.

Есть предложения?

Ответы [ 5 ]

27 голосов
/ 21 июля 2011

Может быть, это поможет (хотя я и не знаю, зачем это вообще нужно)

NSInteger i = @(YES).integerValue;

Надеюсь, что это вам поможет.

21 голосов
/ 21 июля 2011

Намного быстрее это сделать так:

BOOL myBool = YES;
int myInt = (myBool ? 1 : 0);

myInt будет 1, если myBool - ДА, и 0, если myBool - НЕТ.

2 голосов
/ 15 августа 2015

Всегда возможно использовать объектно-ориентированную оболочку вокруг числовых примитивов (например, int типа C). Так я отвечаю на вопрос? и да и нет в зависимости от вашей точки зрения. Однако вот что я предпочитаю использовать при использовании BOOL в качестве входных данных:

NSNumber *numval = [NSNumber numberWithBool:Info.isattachementDownloadable];

А если вам действительно нужно использовать примитивный тип данных:

int val = [numval intValue];
1 голос
/ 14 января 2016

Вы можете просто присвоить значение BOOL для int, так как YES и NO являются просто сочетаниями клавиш для 1 и 0. Вы также можете выполнять математические операции с BOOL.К вашему сведению, BOOL могут даже содержать значения от -128 до 127, поскольку они являются просто определениями типов для знаковых символов.

BOOL someBool = YES;
int intFromBool = someBool;
NSLog(@"%d", intFromBool);

intFromBool -= YES;
NSLog(@"%d", intFromBool);

Ссылка: https://www.bignerdranch.com/blog/bools-sharp-corners/

1 голос
/ 21 июля 2011
BOOL myBool;    
int myInt;
if (myBool) myInt = 1;
else myInt = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...