Ответ 1
Я использую только следующее условие и даже не нуждаюсь в категории:
if (!aString.length)
{
...
}
Используя теорию Objective-C, сообщение NIL вернет нуль или ноль, поэтому в основном вам не нужно проверять значение nil.
Я писал небольшую категорию в NSString, и я хотел знать, точно ли этот метод обрабатывает все возможные варианты использования:
Обновление:, чтобы уточнить - я хотел удостовериться, что я не пропущу какой-то нечетный случай с кодировкой символов и т.д.
@implementation NSString (Helpers)
+(BOOL)stringIsNilOrEmpty:(NSString*)aString {
if (!aString)
return YES;
return [aString isEqualToString:@""];
}
@end
Использование образца:
-(void) sampleUsage {
NSString *emptyString = @"";
NSString *nilString = nil;
NSAssert([NSString stringIsNilOrEmpty:nilString] == YES, @"String is nil/empty");
NSAssert([NSString stringIsNilOrEmpty:emptyString] == YES, @"String is nil/empty");
}
@end
Я использую только следующее условие и даже не нуждаюсь в категории:
if (!aString.length)
{
...
}
Используя теорию Objective-C, сообщение NIL вернет нуль или ноль, поэтому в основном вам не нужно проверять значение nil.
Вы можете упростить код, удалив условное:
+(BOOL)stringIsNilOrEmpty:(NSString*)aString {
return !(aString && aString.length);
}
@dasblinkenlight ответ прекрасен, но гораздо более читаемая условная проверка, которую я бы использовал, это:
NSString *string = ...; // define the string
if ([string length] == 0) {
// Do stuff with the string
} else {
// The string is empty or nil here
}
Очень краткий и не требует отдельного определения функции удобства. Это достаточно легко запомнить.
EDIT: @Michael G. Emmons опубликовал это как последний комментарий к этому ответу... кредит ему, но я перечисляю это как ответ сам по себе.
Некоторые примеры такого типа "не являются пустыми или пустыми" в качестве категории на NSString.
// Please note that in general I advocate using a prefix on category methods
// to avoid category collisions. I've not done this here for clarity.
// The @interface is also excluded from this example for brevity.
@implementation NSString (MyAdditions)
- (BOOL)isNotEmpty
{
return [self length] != 0;
}
- (BOOL)isNotBlank
{
if ([self isNotEmpty])
{
NSCharacterSet *nonWhitespaceSet = [[NSCharacterSet whitespaceAndNewlineCharacterSet] invertedSet];
NSRange range = [self rangeOfCharactersFromSet:nonWhitespaceSet];
return range.location != NSNotFound;
}
return NO;
}
@end
Просто проверьте длину строки
> if (!yourString.length){ > //your code } a
сообщение NIL вернет нуль или 0, поэтому нет необходимости проверять значение nil:).
Счастливое кодирование...
Обязательно проверьте пробелы, обрезайте пробелы перед вычислением длины.
+(BOOL)stringIsNilOrEmpty:(NSString*)aString {
return !aString || [[aString stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]] length] == 0;
}