获取可为空的布尔值的 Objective-C 方法是啥?

     2023-05-08     112

关键词:

【中文标题】获取可为空的布尔值的 Objective-C 方法是啥?【英文标题】:What is the Objective-C way of getting a nullable bool?获取可为空的布尔值的 Objective-C 方法是什么? 【发布时间】:2011-03-28 06:15:45 【问题描述】:

我应该如何在 Objective-C 中获得一个可以分配 true、false 和 nil 的布尔值?这样做的 Objective-C 方法是什么?很像 C# 的 Nullable。

我希望能够使用 nil 值来表示未定义。

【问题讨论】:

【参考方案1】:

NSNumber 实例可能会有所帮助。例如:

NSNumber *yesNoOrNil;

yesNoOrNil = [NSNumber numberWithBool:YES]; // set to YES
yesNoOrNil = [NSNumber numberWithBool:NO];  // set to NO
yesNoOrNil = nil; // not set to YES or NO

为了确定它的价值:

if (yesNoOrNil == nil)

    NSLog (@"Value is missing!");

else if ([yesNoOrNil boolValue] == YES)

    NSLog (@"Value is YES");

else if ([yesNoOrNil boolValue] == NO)

    NSLog (@"Value is NO");

在 10.3 之后的所有 Mac OS X 平台和所有 iPhone OS 平台上,-[NSNumber boolValue] 方法保证返回 YES 或 NO。

【讨论】:

同意这是最接近本机的方法,但我讨厌这样做。如果开发人员忘记该属性是NSNumber* 并假设它是BOOL,则会导致难以发现的错误,在这种情况下,他们会测试if (yesNoOrNil),它会在没有任何警告的情况下给出错误的结果。【参考方案2】:

我认为您需要为此使用一些类,例如将 bool 包装到 NSNumber 对象。

【讨论】:

+1 你当然不需要来使用类,但这是最好的方法。 那么,比如……你是怎么做到的?

检查可为空的布尔值是不是为空[重复]

】检查可为空的布尔值是不是为空[重复]【英文标题】:checkingifanullableboolisnullornot[duplicate]检查可为空的布尔值是否为空[重复]【发布时间】:2012-10-2913:44:15【问题描述】:可能重复:Whichispreferred:Nullable<>.HasValueorNullable<>... 查看详情

如何从大量可为空的布尔值中返回布尔值?

】如何从大量可为空的布尔值中返回布尔值?【英文标题】:HowcanIreturnaboolvaluefromaplethoraofnullablebools?【发布时间】:2012-12-0604:48:32【问题描述】:使用此代码:privateboolAtLeastOnePlatypusChecked()return((ckbx1.IsChecked)||(ckbx2.IsChecked)||(ckbx3... 查看详情

C# ||运算符不使用可为空的布尔值

】C#||运算符不使用可为空的布尔值【英文标题】:C#||operatornotworkingwithnullablebooleans【发布时间】:2012-02-2016:06:20【问题描述】:我的LINQ中有以下代码:where(tf.Shipped||tf.Ordered||tf.Processed)请注意,Shipped、Ordered和Processed都是可为空... 查看详情

如何将 CheckBox 绑定到可为空的布尔类型 DbColumn?

】如何将CheckBox绑定到可为空的布尔类型DbColumn?【英文标题】:HowtobindaCheckBoxtoabooltypedDbColumnthatisnullable?【发布时间】:2010-11-1907:35:43【问题描述】:在Windows窗体(.NET2.0,VisualStudio2005SP1)中:我有一个类型为DataSet的列,其类... 查看详情

.NET Dapper 可为空的强制转换错误

...间】:2013-06-0619:58:21【问题描述】:使用.NETDapper,我在获取包含整数值(0/1)的数据库字段以映射到类中可为空的布尔属性时遇到问题。为了简单起见,我已经剥离并重命名了该类,以重现问题所需的最低限度:publicclassTestpublicboo... 查看详情

如何从数据库中获取可为空的 DateTime

】如何从数据库中获取可为空的DateTime【英文标题】:HowtogetnullableDateTimeoutofthedatabase【发布时间】:2012-03-1905:01:08【问题描述】:我的SQLServer数据库包含可为空的DateTime值。如何在我的C#应用程序中将它们转换为可为空的DateTime对... 查看详情

从类中获取可为空的 var

】从类中获取可为空的var【英文标题】:Getanullablevarfromaclass【发布时间】:2020-04-1417:12:57【问题描述】:首先让我说我的Kotlin经验有限。我试图从一个类中获取一个可以为空的var,但是每当我执行它时都会得到一个空指针。类... 查看详情

如何将复选框绑定到可为空的字节字段?

】如何将复选框绑定到可为空的字节字段?【英文标题】:Howtobindcheckboxestonullablebytefields?【发布时间】:2020-02-2800:20:06【问题描述】:输入标签助手需要将复选框绑定到不可为空的布尔字段,但我的旧sql表包含可空的tinyint字段... 查看详情

中继/ graphql:可为空的响应或捕获查询错误的方法

】中继/graphql:可为空的响应或捕获查询错误的方法【英文标题】:relay/graphql:nullableresponseorawaytocatchqueryerror【发布时间】:2016-11-1201:54:03【问题描述】:在relay/graphql中,如何表达一个响应可以为空的查询。我现在陷入两难境地... 查看详情

堆栈溢出错误可为空的数字类型c#

】堆栈溢出错误可为空的数字类型c#【英文标题】:Stackoverflowerrornullablenumbertypesc#【发布时间】:2017-04-2002:14:58【问题描述】:我有一个导致堆栈溢出异常的代码的简单示例,我想知道这是一个常见问题还是某种错误。我正在使... 查看详情

为啥 TargetNullValue 更新可为空的 Source

...TargetNullValue应该在绑定Source评估为null时更新绑定Target:获取或设置当源值为空时在目标中使用的值。除此之外,当Target的值 查看详情

有没有更优雅的方法来添加可为空的整数?

】有没有更优雅的方法来添加可为空的整数?【英文标题】:Isthereamoreelegantwaytoaddnullableints?【发布时间】:2011-04-0516:36:54【问题描述】:我需要添加大量可为null的int类型的变量。我使用空合并运算符将其降低为每行一个变量,... 查看详情

多个可为空的复合外键

】多个可为空的复合外键【英文标题】:Multiplenullablecompositeforeignkeys【发布时间】:2016-09-1214:35:17【问题描述】:我在MVC项目中使用实体框架6.1和代码优先方法。publicclassPackageDaySchedulepublicintIdget;set;publicDateTimeTimeget;set;PublicintPack... 查看详情

将可为空的 int 映射到可为空的 int + automapper

】将可为空的int映射到可为空的int+automapper【英文标题】:mapnullableinttonullableint+automapper【发布时间】:2016-01-2202:48:33【问题描述】:我需要通过autompper将一个可为空的int映射到一个可为空的int这是我的班级事件:publicclassIncident:... 查看详情

尝试解析可为空的字段时出现 AvroTypeException

...:我从调用/subjects/subject/versions/latest的KafkaSchemaRegistryAPI获取我的avro架构,并且有一个"type":[" 查看详情

在cassandra中获取我的布尔字段为空的所有行

】在cassandra中获取我的布尔字段为空的所有行【英文标题】:Togetallrowswheremybooleanfieldisnullincassandra【发布时间】:2020-04-1805:32:25【问题描述】:我通过在cassandra中添加一个布尔类型的新列(比如说x)来更改表。现在我想要x为空... 查看详情

如何将字符串解析为可为空的 int

】如何将字符串解析为可为空的int【英文标题】:Howtoparseastringintoanullableint【发布时间】:2010-09-0721:16:28【问题描述】:我想在C#中将字符串解析为可为空的int。IE。如果无法解析,我想取回字符串的int值或null。我有点希望这会... 查看详情

将 int.TryParse 与可为空的 int 一起使用 [重复]

】将int.TryParse与可为空的int一起使用[重复]【英文标题】:Usingint.TryParsewithnullableint[duplicate]【发布时间】:2017-12-0907:08:33【问题描述】:如何将int.TryParse与可为空的int一起使用?我正在尝试执行类似以下的操作,但显然无法编译... 查看详情