NSString
がnullかどうかを確認したい。 JSON配列から割り当てます。その文字列値を割り当てた後は_<null>
_です。次に、この文字列がnullかどうかを確認します。だから私はこのように置きます
if (myStringAuthID==nil)
しかし、このifステートメントは常にfalseです。 nullの文字列を確認する方法。私を助けてください
ありがとう
そのように:
[myString isEqual: [NSNull null]];
「ヌル」NSStringには3つの可能な解釈があります。
someStringPtr == nil
(id)someStringPtr == [NSNull null]
someStringPtr.length == 0
3つすべての可能性がある場合、3番目のチェックは最初のチェックを含みますが、3つすべての単純なチェックについては知りません。
一般に、JSONはnull
JSON値に対して[NSNull null]
を返しますが、一部のキットは代わりに@""
(長さ== 0)を返す場合があります。 nil
は、配列/辞書に配置できないため、iOSで使用されることはありません。
NSStringなどにキャストする前にチェックするのが最善だと思います、異なるオプションがあり、上記は正しいですが、私はこれが好きです:
id NilOrValue(id aValue) {
if ((NSNull *)aValue == [NSNull null]) {
return nil;
}
else {
return aValue;
}
}
このスニペット(C関数である注意を払う)を使用して、値をポインターに渡す前に、安全に値を渡すことができます。NSNullの値の場合はnilを渡すことができます。 nilを渡すのは素晴らしいことです。nilオブジェクトにメッセージを送信した場合、例外をスローしないからです。 -isKindOfClass
を使用してクラスタイプを確認することもできます。
if(myString == [NSNull null])
を試してください。それは適切に評価する必要があります。
以下は、私が作成した文字列カテゴリの一部です。
@interface NSString (Enhancements)
+(BOOL)isNullOrEmpty:(NSString *)inString;
@end
@implementation NSString (Enhancements)
+(BOOL)isNullOrEmpty:(NSString *)inString
{
BOOL retVal = YES;
if( inString != nil )
{
if( [inString isKindOfClass:[NSString class]] )
{
retVal = inString.length == 0;
}
else
{
NSLog(@"isNullOrEmpty, value not a string");
}
}
return retVal;
}
@end