NSDictionary 检查 ios10 中的“<null>”值

NSDictionary checking for "<null>" value in ios10

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

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

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

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

您需要检查如下:

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

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

使用这些条件:

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

}

or

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

您对 if 条件的理解有误

可以使用

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

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

试试下面的代码:

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

检查的方法有很多种。

使用nil:

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

使用isEqual方法:

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

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

使用==运算符:

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

使用isKindOfClass方法:

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

isKindOfClass:Returns 一个布尔值,指示接收者是给定 class 的实例还是从 class 继承的任何 class 的实例=44=].

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

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

不需要额外检查。