我遇到了这个例外的问题,实际上,当我点击针脚的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 BoulevardduMaréchalJuin
答案 0 :(得分:14)
在您的代码中的某个时刻,您要么在您认为是NSString但实际上是NSNull的对象上调用isEqualToString:
,要么(更有可能)您将NSNull传递给某个方法/属性在某个需要NSString的类。例如,您可能正在设置UILabel的text
属性,其值为annotation.stationAdress
。
您通常只能在不能使用nil
的情况下使用NSNull,例如在NSArray,NSDictionary等中。从集合中提取可能的NSNull值后,您应该包含这样的语句将其转换回nil:
if (value == [NSNull null]) value = nil;
答案 1 :(得分:0)
使用tableviews时要小心,并确保将数据(数组)传递给tableview数据源和委托方法。