CLPlacemark属性为零时的处理

时间:2015-07-25 14:45:38

标签: ios objective-c

我有一个标签,显示属于确切地理位置的街道名称。我正在从placemarkStreet变量中检索街道名称,该名称可以正常运行,但有时当我在控制台上记录placemark.thoroughfare它是(null)时。我知道这是因为它是nil,但我不能写一个正确的if语句来处理nil时的情况。基本上,当值为nil时,下面的if语句都不起作用,所以如果有人能以正确的方式告诉我如何处理这个问题,我真的很感激。

 [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
        NSLog(@"Finding address");

        if (error) {
            NSLog(@"Error %@", error.description);

  } else {

  CLPlacemark *placemarkStreet = [placemarks lastObject];

  NSLog(@"placemark %@", placemarkStreet.thoroughfare);

// 1. attempt
  if ([placemarkStreet.thoroughfare isEqualToString:@"(null)"]) {

// do something
      }

// 2. attempt
  if (!placemarkStreet.thoroughfare) {

// do something
      }
    }];

1 个答案:

答案 0 :(得分:1)

第一次尝试无法正常工作,因为您在nil上调用方法,总是返回false / 0 / nil。 @"(null)"就是NSLog代表nil值的方式。

第二次尝试应该有效 - 它相当于

if (placemarkStreet.thoroughfare == nil) {