0

我正在使用这个简单的代码来检查一个 NSString 对象是否为空,但由于某种原因它失败了

这是我的简单检查

NSString *imageUrl = [dict objectForKey:@"imageUrl"];

    NSLog(@"Jonge: %@", imageUrl);

    if(![imageUrl isEqual:[NSNull null]]) {
        NSLog(@"In the loop");
        NSURL *url = [[NSURL alloc]initWithString:imageUrl];
        NSData *data =[NSData dataWithContentsOfURL:url];
        cell.imageView.image = [UIImage imageWithData:data];
    }

调试清楚地显示对象为空,如下所示

2017-10-23 11:48:22.711228+0800 NWMobileTill[46614:7498779] Jonge: (null)

但我仍然在循环中结束,如下所示

2017-10-23 11:48:22.711367+0800 NWMobileTill[46614:7498779] In the loop

为什么我的空检查不起作用?

4

3 回答 3

0

(null)代表nil, not [NSNull null],所以检查imageUrl != NSNull成功。

你必须写

if (imageUrl) {

这与

if (imageUrl != nil) {
于 2017-10-23T04:20:17.307 回答
0

您还可以检查字符串是否为空白。

if(![imageUrl isEqualToString:@""])

或者

if(![imageUrl isKindOfClass:[NSNull class]])
于 2017-10-23T05:53:30.660 回答
0

nil不代表任何东西或在技术术语中,我们可以这样说'\0'(根据 C 概念)。当我们创建任何类的实例时,默认情况下,Objective C 将其设为 nil。

[NSNull null]将给出一个对象。在 Objective C 中,使用NSNull是有限的。它用于集合(如NSArrayNSDictionary

当您使用 NSDictionary 时,您可以按如下方式进行检查。

if ([dict objectForKey:@"imageUrl"] != [NSNull null]) {
    //your code...
}
于 2017-10-23T06:08:06.817 回答