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




c++ bool转int (4)

您可以将BOOL值赋给int,因为YES和NO只是1和0的快捷键。您还可以在BOOL上执行数学运算。 仅供参考,BOOL甚至可以保持从-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/

每次当我试图将BOOL值转换为int。 INT值显示为真,0显示为False。 理想情况下,它应该返回1为真。

我已经尝试了所有可能的转换方式

int val=Info.isattachementDownloadable;
int val=[[NSString stringWithFormat:@"%d", Info.isattachementDownloadable] intValue];
int val=(int)Info.isattachementDownloadable;

Info.isattachementDownloadable返回BOOL

在所有方面,它显示真正的-8。

任何建议?


Answer #1

这样做要快得多:

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

如果myBool为YES, myInt将为1,如果myBool为NO, myInt将为0。


Answer #2

也许这会有所帮助(以为我不知道为什么可能需要摆在首位)

NSInteger i = @(YES).integerValue;

希望它可以帮助你。


Answer #3

总是可以在数字基元周围使用面向对象的包装(例如C的int)。 那么我是否回答了这个问题? 无论是是和否,取决于你的观点。 但是,在使用BOOL作为输入时,以下是我喜欢使用的:

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

如果你真的需要使用原始数据类型:

int val = [numval intValue];






type-conversion