我在NSString上写了一个小类,我想知道这个方法是否准确处理了所有潜在的用例:
更新:澄清 - 我想确保我没有错过一些涉及字符编码等的古怪案例.
@implementation NSString (Helpers)
+(BOOL)stringIsNilOrEmpty:(NSString*)aString {
if (!aString)
return YES;
return [aString isEqualToString:@""];
}
@end
Run Code Online (Sandbox Code Playgroud)
样品用法:
-(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
Run Code Online (Sandbox Code Playgroud)
Leg*_*ess 121
我只使用下一个条件,甚至不需要一个类别:
if (!aString.length)
{
...
}
Run Code Online (Sandbox Code Playgroud)
使用Objective-C理论,消息到NIL将返回零或零,所以基本上你不必测试nil.
das*_*ght 29
您可以通过删除条件来简化代码:
+(BOOL)stringIsNilOrEmpty:(NSString*)aString {
return !(aString && aString.length);
}
Run Code Online (Sandbox Code Playgroud)
@dasblinkenlight的答案很好,但我会使用的更可读的条件检查是:
NSString *string = ...; // define the string
if ([string length] == 0) {
// Do stuff with the string
} else {
// The string is empty or nil here
}
Run Code Online (Sandbox Code Playgroud)
非常简洁,不需要单独的便利功能定义.这很容易记住.
编辑:@Michael G. Emmons将此作为对该答案的最后评论...对他表示赞赏,但我将其列为答案本身.
归档时间: |
|
查看次数: |
45623 次 |
最近记录: |