2012-08-12 2 views
2

UIImageView에 표시 할 이미지를 결정할 긴 if 문이 있습니다. 그들은 모두 .png 파일이며 다음 코드를 사용합니다.+ [UIImage imageNamed :]가 이미지를 찾았는지 확인하십시오.

if (whatever) { 
    image = [UIImage imageNamed: @"imageName.png"]; 
} 

프로그램에서 이미지를 찾을 수 있는지 확인하는 방법을 알고있는 사람이 있습니까? 따라서 프로그램에 이미지가 없으면 오류 이미지가 표시 될 수 있습니까?

+1

이미지는 파일에 저장해야합니까? 그렇다면 확인하는 방법이 아닙니다.'[UIImage imageNamed]'는 번들 파일에만 사용해야합니다. –

+0

아주 좋은 코멘트! 하지만 여전히 앱을 올바르게 패키징하지 못해 번들 된 이미지가 누락 된 경우가있을 수 있습니다. – Farcaller

답변

6
+[UIImage imageNamed:] 

은 해당 이미지 파일을 찾을 수없는 경우 nil을 반환합니다. 그래서 그냥 확인 :

UIImage *image = [UIImage imageNamed:@"foo.png"]; 
if (image == nil) 
{ 
    [self displayErrorMessage]; 
} 
+0

굉장히 고마워요! – user1530460

+0

@ W'rkncacnter 아, 죄송합니다, 나는 그것을 간과했습니다. 확실히 클래스 메소드입니다. –

3

가장 짧은 조각은

image = [UIImage imageNamed:@"imageName"] ? : [UIImage imageNamed:@"fallback_image"] 

이 될 것입니다하지만 당신은 정말 같은 코드를 원하는가?

if(! (image = [UIImage imageNamed: @"imageName.png"])) { 
    ... 
} 

처럼 여전히 단락 될 수

if (whatever) { 
    image = [UIImage imageNamed: @"imageName.png"]; 
    if(image == nil) { 
     image = [UIImage imageNamed: @"fallback_image"]; 
    } 
} 

,하지만 당신은 여기에 가독성과 놀겠다는 거있어 :

다른 체크를합니다.

0

먼저 긴 if 대신 사전을 사용하는 것이 좋습니다. 각 이미지 이름을 whatever으로 입력 할 수 있습니다. whatever이 현재 개체가 아닌 경우 해당 정보를 캡슐화하는 enum을 만들고 NSNumber을 사용하여 열거 형의 값을 입력하십시오.

그런 다음 이미지 검색을 시도 할 때 nil을 확인할 수 있습니다. imageNamed:nil을 사용하여 오류를 나타냅니다.

if(!image){ 
    // No image found 
} 
관련 문제