Извините, вы просто не можете сделать это на C #, не имея MyClass
generic для обоих типов (если вы не хотите использовать отражение для создания экземпляров его.)
Вы можете проверить, если [длина строки] == 0
. Это проверит,
Ответ Марка правильный. Но я воспользуюсь этой возможностью, чтобы добавить указатель на обобщенный 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);
}
Первый подход допустим, но не работает, если в вашей строке есть пробелы ( @ ""
). Поэтому перед тестированием вы должны очистить эти пробелы.
Этот код очищает все пробелы с обеих сторон строки:
[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];
Хорошая идея - создать один макрос, поэтому вам не нужно вводить эту монструозную строку :
#define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]
Теперь вы можете использовать:
NSString *emptyString = @" ";
if ( [allTrim( emptyString ) length] == 0 ) NSLog(@"Is empty!");
Лучше использовать эту категорию:
@implementation NSString (Empty)
- (BOOL) isWhitespace{
return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]length] == 0);
}
@end