Как проверить, является ли строка пустой в Objective-C?

Извините, вы просто не можете сделать это на C #, не имея MyClass generic для обоих типов (если вы не хотите использовать отражение для создания экземпляров его.)

635
задан Cœur 25 April 2019 в 04:12
поделиться

4 ответа

Вы можете проверить, если [длина строки] == 0 . Это проверит,

1137
ответ дан 22 November 2019 в 21:51
поделиться

Ответ Марка правильный. Но я воспользуюсь этой возможностью, чтобы добавить указатель на обобщенный isEmpty Уилла Шипли, которым он поделился в своем блоге :

static inline BOOL IsEmpty(id thing) {
return thing == nil
|| ([thing respondsToSelector:@selector(length)]
&& [(NSData *)thing length] == 0)
|| ([thing respondsToSelector:@selector(count)]
&& [(NSArray *)thing count] == 0);
}
126
ответ дан 22 November 2019 в 21:51
поделиться

Первый подход допустим, но не работает, если в вашей строке есть пробелы ( @ "" ). Поэтому перед тестированием вы должны очистить эти пробелы.

Этот код очищает все пробелы с обеих сторон строки:

[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];

Хорошая идея - создать один макрос, поэтому вам не нужно вводить эту монструозную строку :

#define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]

Теперь вы можете использовать:

NSString *emptyString = @"   ";

if ( [allTrim( emptyString ) length] == 0 ) NSLog(@"Is empty!");
93
ответ дан 22 November 2019 в 21:51
поделиться

Лучше использовать эту категорию:

@implementation NSString (Empty)

    - (BOOL) isWhitespace{
        return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]length] == 0);
    }

@end
16
ответ дан 22 November 2019 в 21:51
поделиться