Objective-C:测试nil / 0值?

时间:2015-10-05 20:02:42

标签: objective-c null

当我记录一个应该是spark-shell --master yarn-client --driver-memory 4g --executor-memory 4g --executor-cores 1 --num-executors 4 的变量时,它给了我0.我认为这意味着它是spark.yarn.am.extraJavaOptions=-Dhdp.version=2.3.0.0-2557 ,我想排除这种情况。如果它为零,我也想排除它。我只想确定1,2,3中存在数字的情况。

但是,我尝试了以下内容,但没有一个成功排除变量记录为0的情况,但包括记录到1,2,3等的情况。任何人都可以建议我做错了。

NSNumber

感谢您的任何建议

2 个答案:

答案 0 :(得分:2)

要测试0值,请尝试以下操作:

  NSNumber *num=[NSNumber numberWithInt:0]; or @(0);

if ([num intValue]==0 ) {
    NSLog(@"number is 0");     //executes
}

NSNumber *num=[NSNumber numberWithInt:1];    or @(1);

if ([num intValue]==1 ) {
    NSLog(@"number is 1");   //executes 
}

同样适用于2和3

答案 1 :(得分:1)

NSNumber是值的对象包装器。您可以将其与nil进行比较,这是合适的,但在您确定它不是nil之后,您需要在其上调用一个方法来获取它所代表的实际值。

if (self.number != nil) {
    NSLog(@"Number value: %ld", self.number.integerValue);
}