什么是布尔类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是布尔类型相关的知识,希望对你有一定的参考价值。

参考技术A 就是能正反两面说的数据
如:过还是没通过
?
婚否?
成功还是失败?
也就是说能用Yes/no回答的,
都可以称为布尔值(Boolean)
扩展阅读:
  Boolean
数据类型
Boolean
变量存储为
16
位(2
个字节)的数值形式,但只能是
True
或是
False。Boolean
变量的值显示为
True

False(在使用
Print
的时候),或者
#TRUE#

#FALSE#(在使用
Write
#
的时候)。使用关键字
True

False
可将
Boolean
变量赋值为这两个状态中的一个。此数据应用于逻辑判断。当其他类型数据转换为逻辑型数据时,0
会转成
False,而其他的值则变成
True。当逻辑型数据转换为整型数据时,False
成为
0,而
True
成为
-1。
  在java中boolean值只能是true和false,而不能用0和1代替,并且一定要小写。
  boolean
operate是指布尔运算。在ansys软件中他的下拉菜单会提示进行的布尔运算项目。
  使用方法
  1.直接赋值boolean
b1=false;
  2.由条件表达式赋值boolean
b2=3>4;
  3.由另一个boolean变量赋值boolean
b3=b1;
  4.由方法返回赋值boolean
b4=list.ready();//假设ready方法返回一个boolean的话
  程序中boolean为布尔类型变量

参考资料:
http://baike.baidu.com/view/1229867.html?wtp=tt

Core Data 实体中布尔属性的类型是啥?

【中文标题】Core Data 实体中布尔属性的类型是啥?【英文标题】:What is the type for boolean attributes in Core Data entities?Core Data 实体中布尔属性的类型是什么? 【发布时间】:2009-06-20 19:10:14 【问题描述】:

我以编程方式使用 Core Data(即不使用 .xcdatamodel 数据模型文件),其方式与 Apple 的 Core Data Utility Tutorial 中描述的方式大致相同。所以我的问题是,当我尝试将属性添加到类型为NSBooleanAttributeType 的实体时,它会出现一些问题。当我将它添加到我的NSManagedObject 子类头文件(在本教程中,将是Run.h)作为

@property (retain) BOOL *booleanProperty;

编译失败,说error: property 'booleanProperty' with 'retain' attribute must be of object type

Cocoa 中似乎有些地方使用NSNumber 对象来表示布尔值,所以我尝试将其设置为

@property (retain) NSNumber *booleanProperty;

相反。但是,这会引发以下运行时错误:

*** -[NSAttributeDescription _setManagedObjectModel:]: unrecognized selector sent to instance 0x101b470
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSAttributeDescription _setManagedObjectModel:]: unrecognized selector sent to instance 0x101b470'

使用 GDB,我可以追溯到源代码中将实体添加到托管对象模型的那一行:

[DVManagedObjectModel setEntities:[NSArray arrayWithObjects:myEntityWithABooleanAttribute, myOtherEntity]];

所以我的问题是:我应该在我的自定义类头中将 booleanProperty 设置为什么类型?

【问题讨论】:

【参考方案1】:

试试:

@property (nonatomic) BOOL booleanProperty;

问题是您在属性定义中使用了保留。为此,您必须具有 Objective-C 类的属性(它应该能够理解“保留”方法)。 BOOL 不是类,而是有符号字符的别名。

【讨论】:

另外值得指出的是它是“BOOL booleanProperty”,没有*。 * 仅用于指针,包括对象指针。 请参阅this reply 以获得更合适的解决方案。【参考方案2】:

我不推荐 Diederik Hoogenboom 建议的方法(即使我的核心数据属性设置为布尔值,我也遇到了错误)。

值得指出的是,虽然这行代码适用于自定义对象,但它不适用于 NSManagedObject 的子类:

@property (nonatomic) BOOL booleanProperty;

你的属性应该这样设置:

@property (nonatomic, retain) NSNumber *booleanProperty;

当我复制布尔类型的方法声明(使用 Jim Correia 建议的技术)时,getter 和 setter 的类型如下:

NSNumber:-(NSNumber *)booleanProperty; 
-(void)setBooleanProperty:(NSNumber *)value;

...这是核心数据中的布尔属性设置的内容,您需要使用以下内容验证您的属性:

-(BOOL)validateBooleanProperty:(NSNumber **)toValidate error:(NSError **)outError 

    int toVal = [*toValidate intValue];

    if ( (toVal < 0) || (toVal > 1) )
    
        NSString *errorString = NSLocalizedStringFromTable(@"Boolean Property", @"TheObject", @"validation: not YES or NO");
        NSDictionary *userInfoDict = [NSDictionary dictionaryWithObject:errorString forKey:NSLocalizedDescriptionKey];

        NSError *error = [[[NSError alloc] initWithDomain:NSCocoaErrorDomain code:-1 userInfo:userInfoDict] autorelease];
        *outError = error;
        return NO;
    
    return YES;
//END

...记得在头文件中包含 validateBooleanProperty 声明。 setter 和 getter 方法使用 -(id)primitiveValueForKey:(NSString *)key 存储和检索您的属性。

最后,您需要从您设置对象的任何视图控制器/应用程序委托中显式调用 validate 方法:

    NSNumber *boolProp = [[[NSNumber alloc] initWithInt :0] autorelease];
    NSError *valError = nil;        
    if ([TheObject validateBooleanProperty:&boolProp error:&valError] == YES)
    
        [TheObject setBooleanProperty :boolProp];   
           

【讨论】:

【参考方案3】:

在标题中,

@property (nonatomic, retain) NSNumber *booleanProperty;

在实现中,

@dynamic booleanProperty;

要将其设置为 true...

self.booleanProperty = [NSNumber numberWithBool:YES];

将其设置为 false...

self.booleanProperty = [NSNumber numberWithBool:NO];

要将其与文字的真正布尔值进行比较:...

self.booleanProperty.boolValue == YES;

将其与文字 false boolean 进行比较:...

self.booleanProperty.boolValue == NO;

欲了解更多信息:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/nsnumber_Class/Reference/Reference.html#//apple_ref/occ/clm/NSNumber/numberWithBool:

【讨论】:

或者使用赋值的简写,self.booleanProperty = @(NO); 正是我需要的。感谢您加倍努力。 (Y)【参考方案4】:

在 NSManagedObject 子类中生成正确访问器的最佳方法之一是在数据建模工具中调出属性或属性的上下文菜单并选择以下命令之一:

将方法声明复制到剪贴板 将方法实现复制到剪贴板 将 Obj-C 2.0 方法声明复制到剪贴板 将 Obj-C 2.0 方法实现复制到剪贴板

【讨论】:

【参考方案5】:

让 Xcode 4.0 为您决定。 在 Xcode 中:从您的 *.xcdatamodel 文件视图中选择一个实体。 选择编辑器>创建 NSMagedObject 子类... Xcode 将您的布尔对象声明为 NSNumber 类型。

编辑:我很好奇缓解 xcdatamodel 的动机是什么?有人吗?

【讨论】:

【参考方案6】:

NSManagedObject 中布尔类型的属性是 NSCFBoolean 类型。这是 NSNumber 的私有子类。

【讨论】:

【参考方案7】:

我不知道这是否只是你的一个错字,但这是:

[NSArray arrayWithObjects:myEntityWithABooleanAttribute, myOtherEntity]

绝对是错误的。该方法的最后一个参数应始终为 nil。

【讨论】:

【参考方案8】:

使用 NSNumber。 CoreData 框架中没有 bool。

【讨论】:

以上是关于什么是布尔类型的主要内容,如果未能解决你的问题,请参考以下文章

什么是布尔类型

JAVA中布尔类型的运用,flag的问题

关于if判断布尔类型以及a==b的情况

Python中布尔类型的值都有哪些呢?

什么是布尔型(boolean)数据类型?

bool是啥类型