Подтвердить что ты не робот

Как проверить NSString имеет значение null или нет

Я хочу проверить погоду a NSString null или нет. Im назначается из массива JSON. После назначения этого строкового значения <null>. Теперь я хочу проверить, что эта строка имеет значение null или нет. Поэтому я ставлю вот что

if (myStringAuthID==nil), но это утверждение if всегда ложно. Как я могу проверить строку для null. Пожалуйста, помогите мне

Спасибо

4b9b3361

Ответ 1

Вроде:

[myString isEqual: [NSNull null]];

Ответ 2

Существует три возможных интерпретации "NULL" NSString:

  • someStringPtr == nil
  • (id)someStringPtr == [NSNull null]
  • someStringPtr.length == 0

Если у вас есть возможность всех 3, 3-я проверка включает первый, но я не знаю простой проверки для всех трех.

В общем, JSON вернет [NSNull null] для значения null JSON, но некоторые наборы могут вернуть @"" (length == 0). nil никогда не будет использоваться в iOS, поскольку он не может быть помещен в массивы/словари.

Ответ 3

Попробуйте if(myString == [NSNull null]). Это должно правильно оценить его.

Ответ 4

Я думаю, что лучше всего, если вы проверите перед тем, как направить его на NSString или что-то еще, у вас есть разные варианты, выше все правильно, но я предпочитаю это:

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

Используя этот фрагмент (обратите внимание, что это функция C) перед передачей значения указателю, вы можете безопасно передать значение или значение nil, если значение в NSNull. Передача нуль велика, потому что если вы отправляете сообщение объекту nil, он не генерирует исключение. Вы также можете проверить тип класса с помощью -isKindOfClass.

Ответ 5

Вот часть строки, которую я создал:

@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