NSIntegerが有効であることを確認するにはどうすればよいですか?NSInteger!= nil
NSInteger previousScore = [[self score] integerValue];
if (previousScore != nil) {
//do something
}
NSIntegerが有効であることを確認するにはどうすればよいですか?NSInteger!= nil
NSInteger previousScore = [[self score] integerValue];
if (previousScore != nil) {
//do something
}
NSInteger
はオブジェクトではありません。単純に型キャストされたプリミティブint
です。したがって、決してnil
にはなりません。 int
をまっすぐに使用している場合と同じように扱います。
編集: セザールさんのコメント時に言えば、は、64ビットシステム上でNSInteger
は、実際にlong
で、32ビットシステム上では、int
です。あなたがオブジェクトではなく、プリミティブな値を取り戻すしているので、これは動作します
NSNumber *previousScore = [self score];
if (previousScore != nil) {
NSInteger previousScoreValue = [previousScore integerValue];
// do something
}
:あなたのコード内の妥当性をチェックしたい場合は
として定義してください:#if __LP64__ typedef long NSInteger; #else typedef int NSInteger; endif –
多くの場合、NSIntegerはゼロと同じであるため、実際にはNSIntegerはnilになりますが、コンパイラの警告が出ることもあります。 [self score]がnilに戻った場合、PreviousScoreは0(nil)になります... –
残念ながら、nilは0です。デバッガで "po nil == 0"を試してください。それは "真"を印刷する – nont
挨拶が削除されました: "ありがとうございます"次回は –