这可能是最简单的一个,但我找不到确切的原因。以下是我的代码,而不是用文字解释:
NSString *str = @"";
NSInteger tempInteger = [str integerValue];
if (tempInteger == 0)
{
NSLog (@"do something");
}
如果 NSString
返回 NULL
那么 NSInteger
返回 0 并且如果 NSString
有一些值那么 NSInteger
返回相同的值。
但是当 NSString
为 NULL
时,我希望 NSInteger
应该返回 NULL
而不是 0 但我不能将 NSInteger
验证为 NULL
。
如果 NSString
为 NULL,如何在 NSInteger
中获取 NULL
值?
最佳答案
NULL
是一个指针; NSInteger 是一个只能保存数字的 C 原语。 NSInteger 永远不可能是 NULL
。 (旁注:当我们谈到 Objective-C 对象指针时,我们使用 nil
而不是 NULL
。)
相反,如果您只想处理整数值为 0 而字符串不是NULL
的情况,您应该按如下方式更改您的条件:
if (tempInteger == 0 && str != nil)
但是,在您的情况下,字符串不是 nil
;它只是一个存在的——但空的——字符串。如果您还想检查一下,您的情况可能会变成:
if (tempInteger == 0 && [str length] > 0)
这会检查两种情况,因为nil
字符串将返回长度0
。 (实际上,任何发送到 nil
的方法都会返回 0
、nil
、0.0
等,具体取决于返回类型。)
关于objective-c - 如果 NSString 为 NULL,NSInteger 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11701355/