我从服务获取一些JSON数据,一个属性是表示图像url的字符串,似乎返回的是NULL,我做检查但是XCode在我的if语句之前中断并生成异常。这是我的代码:
- (void)configureCellForAlbum:(Album *)album {
self.albumTitle.text = album.albumTitle;
self.artisteName.text = album.artisteName;
NSURL *imageUrl = [NSURL URLWithString:album.thumbnail];
if (imageUrl == nil) {
self.albumThumbnail.image = [UIImage imageNamed:@"music_record"];
}
else {
self.albumThumbnail.imageURL = imageUrl;
}
}
例外是
由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [NSNull length]:无法识别的选择器发送到实例。
如何进行检查,以便如果值为null,则使用本地图像但如果不为null则使用返回的图像字符串url?
答案 0 :(得分:6)
nil
。
JSON解析器插入NSNull
的实例,以指示存在空值键。
你需要检查你得到的对象是否真的是一个字符串。你没有抓住有对象的情况,但它不是一个字符串。
E.g。
if ([albm.thumbnail isKindOfClass:[NSString class]])
... a string-form URL is present ...
else
.... something else, or nothing, was found; use a fallback ...
答案 1 :(得分:0)
我尝试过其他问题,问你在这里问的问题。但是你需要像上面的Tommy代码那样自定义代码。
NSDictionary *dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"iOS",@"language",nil];
id Value = [dict objectForKey:@"language"];
NSString *strLanguage = @"";
if (Value != [NSNull null]) {
strLanguage = (NSString *)Value;
NSLog(@"The strLanguage is - %@", strLanguage);
}
输出
The strLanguage is - iOS
谢谢你nhgrif: - )