Ответ 1
Вроде:
[myString isEqual: [NSNull null]];
Я хочу проверить погоду a NSString
null или нет. Im назначается из массива JSON. После назначения этого строкового значения <null>
. Теперь я хочу проверить, что эта строка имеет значение null или нет. Поэтому я ставлю вот что
if (myStringAuthID==nil)
, но это утверждение if всегда ложно. Как я могу проверить строку для null. Пожалуйста, помогите мне
Спасибо
Вроде:
[myString isEqual: [NSNull null]];
Существует три возможных интерпретации "NULL" NSString:
someStringPtr == nil
(id)someStringPtr == [NSNull null]
someStringPtr.length == 0
Если у вас есть возможность всех 3, 3-я проверка включает первый, но я не знаю простой проверки для всех трех.
В общем, JSON вернет [NSNull null]
для значения null
JSON, но некоторые наборы могут вернуть @""
(length == 0). nil
никогда не будет использоваться в iOS, поскольку он не может быть помещен в массивы/словари.
Попробуйте if(myString == [NSNull null])
. Это должно правильно оценить его.
Я думаю, что лучше всего, если вы проверите перед тем, как направить его на NSString или что-то еще, у вас есть разные варианты, выше все правильно, но я предпочитаю это:
id NilOrValue(id aValue) {
if ((NSNull *)aValue == [NSNull null]) {
return nil;
}
else {
return aValue;
}
}
Используя этот фрагмент (обратите внимание, что это функция C) перед передачей значения указателю, вы можете безопасно передать значение или значение nil, если значение в NSNull. Передача нуль велика, потому что если вы отправляете сообщение объекту nil, он не генерирует исключение. Вы также можете проверить тип класса с помощью -isKindOfClass
.
Вот часть строки, которую я создал:
@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