我有一个标签,显示属于确切地理位置的街道名称。我正在从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
}
}];
答案 0 :(得分:1)
第一次尝试无法正常工作,因为您在nil
上调用方法,总是返回false / 0 / nil。 @"(null)"
就是NSLog
代表nil
值的方式。
第二次尝试应该有效 - 它相当于
if (placemarkStreet.thoroughfare == nil) {