我如何检查NSNumber是否为空?

时间:2014-03-24 13:26:39

标签: iphone json mkmapview nsnumber

 NSDictionary *regionDict = (NSDictionary *) region;
            NSNumber *lat = [regionDict objectForKey:@"lat"];
            //[latitude addObject:lat];
            NSNumber *lng = [regionDict objectForKey:@"lng"];
            //[longitude addObject:lng];
            NSLog(@"%@%@%@",lat,lng,titles);

            if(lat == [NSNumber numberWithFloat:0.00]  && lng == [NSNumber numberWithFloat:0.00])
            {
                NSLog(@"%@%@%@",lat,lng,titles);
            }
            else
            {
                CLLocationCoordinate2D coord;
                coord.latitude =lat.doubleValue;
                coord.longitude =lng.doubleValue;
                MapViewAnnotation *annotation =[[MapViewAnnotation alloc]initWithTitle:titles AndCoordinate:coord];
                [self.mapView addAnnotation:annotation];
            }

如果由于NSNumber不满足条件而不检查空值。 我可以检查的方式是什么? 告诉我可能的方法..检查null。

5 个答案:

答案 0 :(得分:11)

您可以通过执行

检查对象是否为空
if ([myObject isKindOfClass:[NSNull class]])

但是如果你想检查NSNumber中的一个浮动框是否为零,你可以做

if (lng.floatValue == 0. && lat.floatValue == 0)

答案 1 :(得分:2)

我一直在使用:

检查NSDecimalNumber是否为null
if (decimalNumber == nil)

这对我很有用。

答案 2 :(得分:0)

            NSDictionary *regionDict = (NSDictionary *) region;
            NSNumber *lat;
            if([regionDict objectForKey:@"lat"] == [NSNull null])
            {
                lat = 0;
            }
            else
            {
                lat = [regionDict objectForKey:@"lat"];
            }
            NSNumber *lng;
            if([regionDict objectForKey:@"lng"] == [NSNull null] )
            {
                lng=0;
            }
            else
            {
            //[latitude addObject:lat];
                lng = [regionDict objectForKey:@"lng"];
            }
            //[longitude addObject:lng];


            if(lat.floatValue  == 0.00 && lng.floatValue == 0.00)
            {
                NSLog(@"%@%@%@",lat,lng,titles);
            }
            else
            {
                NSLog(@"%@%@%@",lat,lng,titles);
                CLLocationCoordinate2D coord;
                coord.latitude =lat.doubleValue;
                coord.longitude =lng.doubleValue;
                MapViewAnnotation *annotation =[[MapViewAnnotation alloc]initWithTitle:titles AndCoordinate:coord];
                [self.mapView addAnnotation:annotation];
            }

答案 3 :(得分:0)

我不太清楚你想检查什么。根据您的JSON数据,您将获得以下其中一项:

myObject == nil - the object isn't there at all. 
myObject == [NSNull null] - the JSON data is "null" without the quotes
myObject.doubleValue == 0.0 - the JSON data contained a number 0 or 0.0

请注意,如果JSON数据为“null”,尝试读取doubleValue将会崩溃,因此需要先检查。比较

myObject == [NSNumber numberWithDouble:0.0]

不会起作用,因为它只是比较对象指针。如果这实际上是同一个对象,那将是一个非常巨大的巧合。

答案 4 :(得分:0)

[obj isKindOfClass:[NSNull class]]