我对此异常有问题,实际上,当我单击该引脚的calloutAccessoryControlTapped
按钮时,出现此异常,我尝试通过控制台中的NSLog
跟踪错误,并且我发现导致该异常的唯一引脚具有该值<null>
,我通过一些代码解释:
for (int i=0; i<[array count]; i++) {
NSDictionary *stationEnCours=[array objectAtIndex:i];
location2D = (CLLocationCoordinate2D){ .latitude = lat, .longitude = lng };
MyLocation *annotation=[[[MyLocation alloc]initWithName:ensStation distanceVersLaStation:distance coordinate:location2D]autorelease];
//here we set the properties before we get call to addAnnotation annotation.stationAdress=[stationEnCours objectForKey:@"ssiphone_adresse"];
NSLog(@"%@",annotation.stationAdress);
[mapView addAnnotation:annotation];
}
我有4个工作站,在控制台中,我得到了:
2011-05-11 22:27:11.768 TopStation[2370:207] A 51 - Aire de la Champouse
2011-05-11 22:27:11.769 TopStation[2370:207] <null>
2011-05-11 22:27:11.769 TopStation[2370:207] 467 Avenue Henri Mauriat
2011-05-11 22:27:11.769 TopStation[2370:207] Route de Berre - Jas de Bouffan
第二个是稍后在我尝试单击其
calloutAccessoryControlTapped
时导致问题的原因,因此我检查了数据库,其地址是string
而不是null
。我有点困惑,为什么那个异常虽然全部作为
String
检索?我也曾尝试做同样的工作,但是在服务器端,一切正常,它没有显示NULL
,仅在iPhone端和该站显示。如果有帮助,造成问题的站点地址为:
1 Boulevard duMaréchalJuin
最佳答案
在代码中的某个点上,您是在您认为是NSString但实际上是NSNull的对象上调用isEqualToString:
,或者(更可能是)将NSNull传递给需要NSString的某个类的方法/属性。例如,您可能会使用text
的值设置UILabel的annotation.stationAdress
属性。
通常,您应该只在不能使用nil
的地方使用NSNull,例如在NSArray,NSDictionary等中。从集合中提取出可能的NSNull值后,应包括如下语句将其转换回nil:
if (value == [NSNull null]) value = nil;
关于objective-c - 异常[NSNull isEqualToString:]:当我单击calloutAccessoryControlTapped时无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5970981/