Swift判断是否是空的字符串

代码中会经常对字符串做是否为空的判断,OC中一般定义一个宏定义,直接调用就可以了:

#define DYNSStringIsEmpty(str) ((str==nil)||[str isEqualToString:@"(null)"]||([str length]==0)||[str isEqualToString:@""])

Swift 中如何处理呢,因为Swift对变量的类型要求的比较严格,经常会提示各种警告,经过个反复的尝试,写成了下面的这个样子。

//value 是AnyObject类型是因为有可能所传的值不是String类型,有可能是其他任意的类型。
func DYStringIsEmpty(value: AnyObject?) -> Bool {
    //首先判断是否为nil
    if (nil == value) {
        //对象是nil,直接认为是空串
        return true
    }else{
        //然后是否可以转化为String
        if let myValue  = value as? String{
            //然后对String做判断
            return myValue == "" || myValue == "(null)" || 0 == myValue.count
        }else{
            //字符串都不是,直接认为是空串
            return true
        }
    }
}

调用的时候有点怪异,需要把传的值先转化为AnyObject,不然会报一些类型的警告。

if DYStringIsEmpty(value: self.isSelected as AnyObject) {
     self.isSelected = "0"
}        

Ps:如有误导,欢迎指正...

你可能感兴趣的:(Swift判断是否是空的字符串)