2017-10-23 4 views
0

내가있는 NSString 객체가 null의 경우 확인이 간단한 코드를 사용하고 있지만, 어떤 이유가 여기왜이 null 검사가 실패합니까?

실패하면 디버그 명확

을 다음과 같이 오브젝트가 null을 보여줍니다 내 간단한 검사

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 

null 체크가 작동하지 않는 이유는 무엇입니까?

+0

가능한 중복 https://stackoverflow.com/questions/836601/whats-the-difference-between-nsnull-null-and -nil) – Balasubramanian

+0

밀접하게 관련 : [null (null) vs 의 차이점] (https://stackoverflow.com/q/11287590) –

답변

0

(null)nil이 아니고 [NSNull null]이 아니므로 확인 imageUrl != NSNull이 성공합니다.

당신은

if (imageUrl != nil) { 
+0

null nil 등 다양한 유형에 대한 문서가 있습니까? googled하지만 좋은 하나를 찾을 수 없습니다. –

+2

'NSNull'는 몇 가지 경우에만 사용됩니다. Mattt Thompson은 [nil/Nil/NULL/NSNull에 관한 기사] (http://nshipster.com/nil/) – vadian

0

문자열이 비어 있거나없는 당신은 또한 확인할 수 있습니다과 동일

if (imageUrl) { 

를 작성해야합니다.

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

nil 아무것도를 대표하거나 기술적 인 관점에서, 우리는 '\0'는 (C 개념에 따라) 말할 수 있습니다. 모든 클래스의 인스턴스를 만들 때 Objective C는 기본적으로이 클래스를 무효로 만듭니다.

[NSNull null]은 Object를 제공합니다. 목표 C에서는 NSNull의 사용이 제한됩니다. 컬렉션에 사용됩니다 (예 : NSArrayNSDictionary)

NSDictionary를 사용하는 동안 아래에서 확인할 수 있습니다.

if ([dict objectForKey:@"imageUrl"] != [NSNull null]) { 
    //your code... 
} 
([\ [NSNull 널 \]과 무기 호?의 차이 무엇인가]가의