2010-06-10 7 views
5

내가 NSString의 배열을 가지고 :번들 내에 이미지가 있는지 여부를 확인하는 방법은 무엇입니까?

Flower 
Car 
Tree 
Cat 
Shoe 

이러한 문자열의 일부 그와 관련된 이미지가; 일부는하지 않습니다. 이름에 .png을 추가하여 이미지 이름을 만들 수 있습니다 (예 : Flower.png).

이미지를보기에로드하려고하기 전에 해당 이미지가 실제로 번들 내에 있는지 확인하려면 어떻게합니까?

답변

19

이것은 또한 작업을해야하고, 조금 짧은 :

if (flowerImage = [UIImage imageNamed:@"Flower.png"]) 
{ 
    ... // do something here 
} 
else 
{ 
    ... // image does not exist 
} 

imageNamed: 방법은 메인에서 찾게됩니다 png 파일에 대한 번들.

+0

이 ISEQUAL를 사용하는 좋은 규칙은 : 두 객체가 같은지 검사 할 때. 또한 ==를 사용할 수도 있지만 특정 상황에서 (때로는 객체와 매개 변수를 비교할 때) 예상 된 결과를 반환하지 않기 때문에 추천하지 않습니다. 꽃 이미지가 이미지 png와 같은지 확인하는 대신 할당하는 것처럼 현재 코드도 잘못되었습니다. 이 코드를 복사하면 isEqual : 또는 ==를 추가하면 오류가 발생합니다. –

+0

이 작동하지만 이미지를 찾을 수 없다는 경고 메시지가 iOS에 나타납니다. – Herno

5

그냥 자원을로드하고 nil 여부가 있는지 확인 :

NSString* myImagePath = [[NSBundle mainBundle] pathForResource:@"MyImage" ofType:@"jpg"]; 
if (myImagePath != nil) { 
    // Do something with image... 
} 
3

나는 이미지가있는 경우 다음 확인할 수 있습니다 변수로 이미지를 할당합니다 :

UIImage * flowerImage = [UIImage imageNamed:@"Flower.png"]; 

if (flowerImage) { 
    // Do something 
} 
else { 
    // Do something else 
} 

을 우리는 그림이 특정 이름과 이미지를 동일 있는지 확인하는 허용 대답에. 우리가 돌아올 것 같은 이미지 Flower.png는

  • Flower.png이 존재 이미지를 존재하지 않지만 flowerImage로 설정

    • 경우에 잘못 될 수있다 동일한 이미지가 아닌 다른 이미지를 의미합니다.

    변수를 이미지에 할당 한 다음 변수가 할당되었는지 여부를 확인합니다. 우리에게 명확한 예 또는 Flower.png 나는 심지어 파일 이름에 ".PNG"를 추가하지 마십시오

+1

점 2 점이 맞지 않습니다. if 문에서의 대입 연산자는 if 문 이전의 대입과 완전히 동일합니다. 코드는 허용 된 응답 코드와 동일합니다. – Ephemera

+0

확인. 그러나 내 대답은 받아 들여진 대답이 잘못 될 것이라는 가정하에 달리고있다. = 대신 =를 사용하면 Flower.png이 없거나 flowerImage와 다른 경우 이미지가 존재하지 않습니다. 어쩌면 허용 된 대답은 다음과 같아야합니다. ((flowerImage = [UIImage imageNamed : @ "Flower.png"])) 이것도 할당하므로 (http://stackoverflow.com/questions/3323257/double-parentheses-in-sample- 암호). 이 경우 포인트 2가 요인이되지 않을 것이라고 당신이 맞습니다. 그래도 편집하지 않으면 오류가 발생합니다. –

+0

'= '를 사용하여 if 조건 내에서만 경고를 던지고, 더 이상 그렇게하지 않는다고 생각합니다. 적어도 Xcode에는 컴파일러 플래그를 설정할 수 있습니다. 어쨌든, 이것은 그 질문에 대한 대답이 말하는 다른 10 % 중 하나입니다. 대입 표현식의 결과는 표현식의 왼편입니다 (이 경우 lvalue -'flowerImage'). 이것이 nil (즉, -imageNamed : returned nil)이면 if 조건은 false가됩니다. 그렇지 않으면 사실 일 것입니다. – Ephemera

0

존재 여부에 따라 전혀 반환하지 그것은 작동합니다

NSArray *images = @[@"Flower", @"Car", @"Tree", @"Cat", @"Shoe"]; 

if ([UIImage imageNamed:images[0]]){ 
     // there is a flower image 
    } else { 
     // no flowers for you 
    } 
} 
관련 문제