将BOOL值转换为INT的正确方法?

Tar*_*riq 14 iphone int boolean objective-c type-conversion

每当我尝试将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;
Run Code Online (Sandbox Code Playgroud)

其中,Info.isattachementDownloadable回报BOOL

在所有方面,它显示-8为真.

有什么建议吗?

Ari*_*iel 27

也许这会有所帮助(我想我不知道为什么可能首先需要它)

NSInteger i = @(YES).integerValue;
Run Code Online (Sandbox Code Playgroud)

希望它能帮到你.

  • 我同意,它不是最快的,也不是记忆友好的方法,但它是我所知道的最直接的方法.无论如何,如果你需要效率 - 你总是可以用`int myInt =(someBool?1:0);回复到普通c;正如你在答案中建议的那样.:) (4认同)

Ale*_*hol 22

这样做要快得多:

BOOL myBool = YES;
int myInt = (myBool ? 1 : 0);
Run Code Online (Sandbox Code Playgroud)

myInt如果myBool为是则为1,如果为否则myBool为0 .