NSDictionary检查&#34; <null>&#34; ios10中的值

时间:2016-11-24 10:40:34

标签: ios objective-c nsmutabledictionary

我有NSMutableDictionary存储从数据库编译的数据。 NSMutableDictionary中的某些键具有空值,如下所示。

我想检查空值。我正在做如下:

UserMobileNo = "<null>";
UserAccNo = "<null>";
 if(!([dicUserdata valueForKey:@"UserMobileNo"] == [NSNull null]))
        //Saved result

但是上面的代码似乎并没有完全检查空值。 在字典中检查空值的完美方法是什么?

7 个答案:

答案 0 :(得分:2)

有很多方法可以检查。

使用nil

if([dicUserdata objectForKey:@"UserMobileNo"] == nil){
    // found null
}

使用isEqual方法:

if([[dicUserdata objectForKey:@"UserMobileNo"] isEqual:[NSNull null]]){
    // found null
}

isEqual:返回一个布尔值,指示接收者和给定对象是否相等。

使用==运营商:

if[[dicUserdata objectForKey:@"UserMobileNo"] == [NSNull null]]){
    // found null
}

使用isKindOfClass方法:

if[[dicUserdata objectForKey:@"UserMobileNo"] isKindOfClass:[NSNull null]]){
    // found null
}

isKindOfClass:返回一个布尔值,指示接收者是给定类的实例还是从该类继承的任何类的实例。

答案 1 :(得分:1)

if (![[dicUserdata valueForKey:@"UserMobileNo"]isKindOfClass:[NSNull class]])
{
     //Not Null
} else {
     //Null
}

答案 2 :(得分:0)

您需要检查如下:

if ([[dicUserdata objectForKey:@"UserMobileNo"]isKindOfClass:[NSNull class]]) {

                    }

答案 3 :(得分:0)

使用以下条件:

if(!([[dicUserdata valueForKey:@"UserMobileNo"] isKindOfClass:[NSNull class]])) {

}

or

if([dictUserData[@"UserMobileNo"] isKindOfClass:[NSString class]]) {
   //execute your condition
}

答案 4 :(得分:0)

您以错误的方式解释了if条件

可以使用

if ([dictResponse objectForKey:@"UserMobileNo"] != [NSNull null]) {
     //handle your code   
}

if (![[dictResponse objectForKey:@"UserMobileNo"]isKindOfClass:[NSNull class]]) {
      //handle your code
}

答案 5 :(得分:0)

请尝试以下代码:

if ([[dicUserdata objectForKey:@"UserMobileNo"] isKindOfClass:[NSDictionary class]]) {
    // found null
}else{
    // your code
}

答案 6 :(得分:0)

这样做的正确方法,即确保价值不是nil而不是NSNull是:

if (dictionary[key] && dictionary[key] != [NSNull null]) {
  // not nil or NSNull
}

不需要额外的检查。