Iphone 将布尔值转换为整数的正确方法?
每次我尝试将布尔值转换为int时,int值都显示为-8表示真,0表示假。理想情况下,它应该返回1表示true 我尝试了所有可能的转换方式,比如Iphone 将布尔值转换为整数的正确方法?,iphone,objective-c,int,boolean,type-conversion,Iphone,Objective C,Int,Boolean,Type Conversion,每次我尝试将布尔值转换为int时,int值都显示为-8表示真,0表示假。理想情况下,它应该返回1表示true 我尝试了所有可能的转换方式,比如 int val=Info.isattachementDownloadable; int val=[[NSString stringWithFormat:@"%d", Info.isattachementDownloadable] intValue]; int val=(int)Info.isattachementDownloadable; 其中Info
int val=Info.isattachementDownloadable;
int val=[[NSString stringWithFormat:@"%d", Info.isattachementDownloadable] intValue];
int val=(int)Info.isattachementDownloadable;
其中Info.isattachement可下载
return BOOL
从各个方面来看,它都显示了-8为真
有什么建议吗?也许会有帮助(虽然我不知道为什么一开始就需要它)
BOOL myBool;
int myInt;
if (myBool) myInt = 1;
else myInt = 0;
希望它能帮助您。这样做更快:
BOOL myBool = YES;
int myInt = (myBool ? 1 : 0);
如果
myBool
为是,则myInt
将为1;如果myBool
为否,则为0。始终可以在数字原语(例如C的int)周围使用面向对象的包装。那么我在回答这个问题吗?是和否取决于你的观点。但是,当使用BOOL作为输入时,我更喜欢使用以下内容:
NSNumber *numval = [NSNumber numberWithBool:Info.isattachementDownloadable];
如果您确实需要使用基本数据类型:
int val = [numval intValue];
您可以将布尔值指定给int,因为YES和NO只是1和0的快捷方式。您还可以对布尔值执行数学运算。 仅供参考,bool甚至可以保存从-128到127的值,因为它们只是有符号字符的typedef
BOOL someBool = YES;
int intFromBool = someBool;
NSLog(@"%d", intFromBool);
intFromBool -= YES;
NSLog(@"%d", intFromBool);
参考资料:这很简单。。。但是你没有做任何转换。。。这是不可能的吗?太好了,我正在寻找:)。。。我不知道为什么我错过了这个:(我要指出,对于需要高效率的代码来说,这是一种糟糕的将BOOL转换为int的方法,因为每次转换发生时它都会分配一个对象。我同意,这不是最快的方法,也不是内存友好的方法,但这是我所知道的最直接的objc方法。无论如何,如果你需要效率,你总是可以回到p用
int myInt=(someBool?1:0);
放在c上,正如你在回答中所建议的那样。@AlexNichol[NSNumber numberWithBool:YES]返回一个单例。无论调用多少次,最多只能有一个分配。例如,当您想将UIButton上的tag属性用作BOOL时,可能需要使用此属性-无论按钮最近是否按下。然后您不需要在控制器中为此声明任何额外属性。我做了简单的int intVar=boolVar;
并且它在int中采用正确的值,即1代表1,0代表0,甚至更好,myBool!=0
,或者JavaScript的专利!!myBool
。我可能是错的,但在Obj-c中作为int使用时,BOOL不会自动转换为这个int值吗?例如NSLog(@“%i”,YES+YES);logs 2
BOOL someBool = YES;
int intFromBool = someBool;
NSLog(@"%d", intFromBool);
intFromBool -= YES;
NSLog(@"%d", intFromBool);