如果NSString为NULL,则NSInteger返回0

iMa*_*ash 0 objective-c nsinteger ios

这可能是最简单的一个,但我无法找到确切的原因.而不是用以下单词解释我的代码:

NSString *str = @"";
NSInteger tempInteger = [str integerValue];

if (tempInteger == 0)
{
  NSLog (@"do something");
}
Run Code Online (Sandbox Code Playgroud)

如果NSString返回NULL然后NSInteger返回0并且如果NSString有一些值则NSInteger返回相同的值.

但是,当NSStringNULL那么我想NSInteger应该返回NULL不为0,但我不能确认NSIntegerNULL.

如果为NULL,我怎样才能得到NULL值?NSIntegerNSString

and*_*n22 10

NULL是一个指针; NSInteger是一个只能保存数字的C原语.永远不可能有NSInteger NULL.(旁注:当我们谈到Objective-C对象指针时,我们使用nil而不是NULL.)

相反,如果您只希望处理整数值为0但字符串不是的情况 NULL,则应更改条件,如下所示:

if (tempInteger == 0 && str != nil)
Run Code Online (Sandbox Code Playgroud)

但是,在您的情况下,字符串不是nil; 它只是一个存在的 - 但是空的 - 字符串.如果您还想检查,您的病情可能会变成:

if (tempInteger == 0 && [str length] > 0)
Run Code Online (Sandbox Code Playgroud)

这会检查两种情况,因为nil字符串将返回长度0.(事实上,发送的任何方法来nil将返回0,nil,0.0取决于返回类型,等等).