如何检查字典值是否为空

How to check dictionary value is empty or not

我是 swift 的新手,遇到了一些小问题,我不明白如何检查字典值。

func doValidate(data:Dictionary<String,AnyObject>,isEmail : String) -> Bool {
    if(isEmail=="signup"){
        if( data["last_name"] == nil || data["email"] == nil || data["password"] == nil || data["first_name"] == nil){
            return false;
        }
        else{
            return true;
        }
    }
}

字典键始终不变,每次字典键都存在,但我如何检查

value of data["last_name"] is empty or not?

如果我使用循环,那么它可以工作,但为什么单值不起作用?

for( myKey,myValue ) in data { 
    if(myValue as! String == ""){ // Work Perfect
        return false;
    }
}

如果您想检查字符串值,请检查长度。例如

func doValidate(data:Dictionary<String,AnyObject>,isEmail : String) -> Bool {
        if(isEmail=="signup"){
            if( data["last_name"]?.length == 0 || data["email"]?.length == 0 || data["password"]?.length == 0 || data["first_name"]?.length == 0){
                return false;
            }
            else{
                return true;
            }
        }
    }

要检查值,请使用 objectForKey()
这是修改后的代码

func doValidate(data:Dictionary<String,AnyObject>,isEmail : String) -> Bool {
if(isEmail=="signup"){
    if( data.objectForKey("last_name") == nil || data.objectForKey("email") == nil || data.objectForKey("password") == nil || data.objectForKey("first_name") == nil){
        return false;
    }
    else{
        return true;
    }
   }
 }

您可以考虑使用 Swift 1.2 引入的语法反转您的 if 逻辑,获得如下内容:

func doValidate(data:Dictionary<String,AnyObject>,isEmail : String) -> Bool {

    if(isEmail == "signup"){
        if let lastName = data["last_name"] as? String,
            let email = data["email"] as? String,
            let password = data["password"] as? String,
            let firstName = data["first_name"] as? String
            where
            !lastName.isEmpty &&
            !email.isEmpty &&
            !password.isEmpty &&
            !firstName.isEmpty {
                return true
        }
    }

    return false
}