objective-c - 异常[NSNull isEqualToString:]:当我单击calloutAccessoryControlTapped时无法识别的选择器

标签 objective-c web-services ios json

我对此异常有问题,实际上,当我单击该引脚的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/

相关文章:

objective-c - 执行 IBAction 时如何隐藏按钮?

linux - 如何使用网络服务从 VLC (linux) 流式传输到 iPod(完整过程)?

c# - 浏览器可以访问 web 服务,但我的 C# 应用程序获取 "Could not establish trust relationship"

iOS 10 iPhone 应用程序在 iPad 上以 3.5 英寸显示

ios - Images.xcassets 在存档或构建运行时出现错误

iphone - CoreData - 从一对多关系中选择特定条目

objective-c - NSBundle pathForResource 不工作

ios - 指定初始化程序的目的

java - 使用 Apache 的双向 SSL 是否需要任何 Tomcat 设置?

ios - 钛-无法停止iOs后台进程