我在NSString上写了一个小类别,我想知道这个方法是否能够准确地处理所有潜在的用例:

Update:来澄清——我想确保我没有遗漏一些涉及角色编码等的奇怪 case ..

@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或零,因此基本上是you do not have to test for nil.

Objective-c相关问答推荐

为何在Objective-C中,使用self.propName赋值会导致崩溃而使用_ivarName则不会?

iPhone 可达性判断

将谷歌 map 添加为子视图会使 iOS 应用程序因 exc_bad 崩溃

来自 NSDate 的日期名称?

如何声明仅调试语句

iOS中CALayer的UIImage

如何构建一个 Objective-C 静态库?

对 nil 对象进行快速枚举

右对齐的 UITextField 空格键在 iOS 7 中不前进光标

如何在使用 React Native 时实现 SSL 证书固定

在 iPhone 应用程序中使用 RestKit 的最佳方式

如何在 iPhone 上画出讲话泡泡?

[MFMailComposeViewController canSendMail] 什么时候返回 NO

distanceFromLocation - 计算两点之间的距离

UIKeyboardBoundsUserInfoKey 已弃用,改用什么?

在 UITextField 文本上投影

为什么 LLDB 不能打印 view.bounds?

使用 UINavigationController 在 UIPageViewController 中下推内容

如何配置我的应用程序 - 菜单项被禁用?

请求访问相机胶卷的权限