2014-11-17 2 views
-2

다음 코드는 그 자체로 말합니다.if-else 문을 더 짧은 방법으로 대체하려면 어떻게해야합니까?

if (card==1) { 
    cardImageString = @"myGrabbedImage1.png"; 
} else if (card==2) { 
    cardImageString = @"myGrabbedImage2.png"; 
} else if (card==3) { 
    cardImageString = @"myGrabbedImage3.png"; 
} else if (card==4) { 
    cardImageString = @"myGrabbedImage4.png"; 
} else if (card==5) { 
    cardImageString = @"myGrabbedImage5.png"; 
} else if (card==6) { 
    cardImageString = @"myGrabbedImage6.png"; 
} else if (card==7) { 
    cardImageString = @"myGrabbedImage7.png"; 
} else if (card==8) { 
    cardImageString = @"myGrabbedImage8.png"; 
} 

실제 if-else는 이보다 10 배 더 큽니다.

카드 = int.

CardImageString = NSString.

'카드'는이 문장에서만 사용되며 답변에서 삭제할 수 있습니다.

어떻게이 모든 기능을 단순화 할 수 있습니까 ??? 감사!!

답변

7
cardImageString = [NSString stringWithFormat:@"myGrabbedImage%@.png", @(card)]; 
+0

@vince : 그것은 1 ~ 8 단지 넣다 경우, 당신은 카드를 확인하시기 바랍니다. – rckoenes

+0

NSNumber 정수의 로케일은 다른 출력을 가질 수 있습니까? 나는 그것을'NSNumber'로 복싱 한 것으로 생각하고 인쇄하는 것이 가장 유연합니다. 왜냐하면'int','long','NSInteger' 또는 다른 것을 사용하기 때문에 컴파일러 경고를 피하기 위해 캐스팅하지 않아도 작동하기 때문입니다. –

+1

OK, 추가 테스트를 마친 후, 나는 틀렸어. 'stringWithFormat'는 현재 로켈이 아닌 시스템 로케일을 사용합니다. 그래서 사용자의 로켈에 관계없이 응답의 코드가 작동합니다. 내 투표를 취소 할 수 있도록 답변을 사소한 수정해야합니다. 혼란에 대해 죄송합니다. – rmaddy

3
cardImageString = [NSString stringWithFormat:@"myGrabbedImage%d.png",card]; 
관련 문제