web-dev-qa-db-ja.com

NSStringがnullかどうかを確認する方法

NSStringがnullかどうかを確認したい。 JSON配列から割り当てます。その文字列値を割り当てた後は_<null>_です。次に、この文字列がnullかどうかを確認します。だから私はこのように置きます

if (myStringAuthID==nil)しかし、このifステートメントは常にfalseです。 nullの文字列を確認する方法。私を助けてください

ありがとう

19
user2889249

そのように:

[myString isEqual: [NSNull null]];
62
Mirko Catalano

「ヌル」NSStringには3つの可能な解釈があります。

  1. someStringPtr == nil
  2. (id)someStringPtr == [NSNull null]
  3. someStringPtr.length == 0

3つすべての可能性がある場合、3番目のチェックは最初のチェックを含みますが、3つすべての単純なチェックについては知りません。

一般に、JSONはnull JSON値に対して[NSNull null]を返しますが、一部のキットは代わりに@""(長さ== 0)を返す場合があります。 nilは、配列/辞書に配置できないため、iOSで使用されることはありません。

10
Hot Licks

NSStringなどにキャストする前にチェックするのが最善だと思います、異なるオプションがあり、上記は正しいですが、私はこれが好きです:

id NilOrValue(id aValue) {
  if ((NSNull *)aValue == [NSNull null]) {
    return nil;
  }
  else {
    return aValue;
  }
}

このスニペット(C関数である注意を払う)を使用して、値をポインターに渡す前に、安全に値を渡すことができます。NSNullの値の場合はnilを渡すことができます。 nilを渡すのは素晴らしいことです。nilオブジェクトにメッセージを送信した場合、例外をスローしないからです。 -isKindOfClassを使用してクラスタイプを確認することもできます。

1
Andrea

if(myString == [NSNull null])を試してください。それは適切に評価する必要があります。

1
Nicholas Smith

以下は、私が作成した文字列カテゴリの一部です。

@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
1
JonahGabriel