NSInteger!=无

dre*_*bot 13 iphone objective-c ios4

如何检查NSInteger是否有效?

NSInteger previousScore = [[self score] integerValue];
    if (previousScore != nil) {
        //do something
    }
Run Code Online (Sandbox Code Playgroud)

Ken*_*ner 15

如果您想检查代码中的有效性,您可以执行以下操作:

NSNumber *previousScore = [self score];

if ( previousScore != nil ) {
  NSInteger previousScoreValue = [previousScore integerValue];
  // do something
}
Run Code Online (Sandbox Code Playgroud)

这可以在您获取对象时起作用,而不是原始值.


Mar*_*c W 13

NSInteger不是一个对象.它只是一个类型化的原语int.因此,它永远不会nil.就像你直接使用它一样对待它int.

编辑: 为了阐述Cesar的评论,在64位系统NSInteger上实际上是一个long32位系统,它是一个int.

  • 实际上默认情况下在很多情况下NSInteger都是nil,因为nil与零相同......你可能会收到编译器警告.在给出的示例代码中,如果[self score]回来没有,那么之前的分数将是0(零)... (5认同)
  • 定义为:#if __LP64__ typedef long NSInteger; #else typedef int NSInteger; 万一 (2认同)