У меня есть метод, в котором я хочу убедиться, что я делаю что-то особенное, когда сталкиваюсь с «пустой» строкой. Он прекрасно работает, когда на самом деле есть строка, или когда я специально установил ее на «nil» или «NULL», но вылетает, когда я пытаюсь протестировать неинициализированную строку NSString. Как мне справиться с этим сценарием?
Например:
-(void) WhyDoICrash
{
NSString *foo;
// Some other stuff...
// foo should be considered "empty"
if (foo == nil || foo == NULL || [foo length] == 0)
{
// whatever
}
}
============= РЕДАКТИРОВАТЬ ===================
Хорошо, выше было просто ДЕЙСТВИТЕЛЬНО простой пример, который отображает проблему. Я фактически использую категорию для NSString, что означает, что некоторые из (хороших, но не применимых) рекомендаций, которые я получаю, не могут быть использованы. Вот мой точный код:
#pragma mark - NSString Category
@interface NSString (NullOrEmptyTesting)
+(BOOL) isNullOrEmpty: (NSString*)input;
@end
@implementation NSString (NullOrEmptyTesting)
+(BOOL) isNullOrEmpty: (NSString*)input
{
return (input == (id)[NSNull null] || input.length == 0);
}
@end