如何检查字典值是否为空

时间:2015-05-27 05:26:04

标签: swift nsmutabledictionary

我是一个快速面对小问题的新手,我不理解如何检查字典值。

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;
    }
}

3 个答案:

答案 0 :(得分:3)

要检查值,请使用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;
    }
   }
 }

答案 1 :(得分:1)

你可以考虑使用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
}

答案 2 :(得分:0)

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

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;
            }
        }
    }