objective-c - 如果 NSString 为 NULL,NSInteger 返回 0

标签 objective-c ios nsinteger

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

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

if (tempInteger == 0)
{
  NSLog (@"do something");
}

如果 NSString 返回 NULL 那么 NSInteger 返回 0 并且如果 NSString 有一些值那么 NSInteger 返回相同的值。

但是当 NSStringNULL 时,我希望 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 的方法都会返回 0nil0.0 等,具体取决于返回类型。)

关于objective-c - 如果 NSString 为 NULL,NSInteger 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11701355/

相关文章:

ios - 从 Objective C 类更新 SwiftUI View

objective-c - 如何在没有 UIScrollView 的情况下放大和缩小 UIImageView?

javascript - 如何在 React Native 中打开 HTTP 服务器

ios - 创建默认为 NSInteger 的枚举值

ios - 字符串转换为大整数值

Objective-C:窗口未声明

javascript - HTML5 拖放 - 不适用于 iOS 12.1.2(Safari 和 Chrome)

iOS 7 导航栏

objective-c - 指向整数的指针

ios - 访问属性的EXC_BAD_ACCESS异常