关于NSString判空与移除字符串首尾空白方法的设计
背景
时常会遇到NSString实例对象需要判空以及删除首尾空白字符的需求。发现许多工程师因不恰当的处理以上两种需求,引发了APP崩溃问题。原因可能来源如下:1. 不太理解,什么叫空字符串。2. 不恰当的删除字符串首尾空白。3. 不恰当的返回删除字符串首尾空白之后的值。
判空设计
什么是空字符串?内容为空的字符串即length==0的字符串或者任何其他非NSString类型的变量。考虑到,对nil发送消息将不会有任何响应,返回值仍然为0((id)0)。因此,从以上方面来看NSString Category应该添加如下这样的判空方法。+(BOOL)isEmptyString:(NSString *)string{ if(string && [string isKindOfClass:[NSString class]] && string.length>0){ return NO; }else{ return YES; } }
删除字符串首尾空白设计
不恰当的删除字符串首尾空白。不恰当的返回删除字符串首尾空白之后的值。因此,从以上方面来看NSString Category应该添加如下方法。+(NSString *)stringByTrimmingBothEndWhiteSpace:(NSString *)string{ if([NSString isEmptyString:string]){ //最好不要使用nil,因为这改变了类型,会引起bug。 //此处采用NSString初始化返回值(一个空字符串),相当于类型转换(将可能的任何其他类型转换为字符串类型)。 return [[NSString alloc] init]; }else{ return [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; } }