2012-06-19 3 views
-1

NSString의 월 이름을 2 자리 숫자 값으로 대체하려고합니다. "January"=> "01", "February"=> "02". 내가 사용하는 접근 방식은 다음과 같습니다 :은 NSString의 값을 대체합니다.

if ([email protected]"january") { [email protected]"01";} 
if ([email protected]"February") { [email protected]"02";} 

...하지만 작동하지 않습니다. 이 대체품을 만들려면 어떻게해야합니까?

+0

아, 좋은 지적입니다. 제안 된 모든 답변을 보면 무엇이 작동하지 않는지를 알 수 있습니다. if 문이 작동하지 않거나 mois의 재 할당이 작동하지 않습니다. –

+0

가장 좋은 방법은 몇 개월 동안 열거 형을 생성하는 것입니다. enum { 1 월 = 1, 2 월 2 일, .. .. 12 월 = 12} 개월; [this] (http://make-smart-iphone-apps.blogspot.in/2011/04/how-to-use-enums-in-objective-c.html) 코드에서 사용하는 방법에 대한 링크 –

+0

@Safecase가 왜 "가장 좋은 방법"입니까? 그렇게함으로써 얻을 수있는 이점은 무엇입니까? –

답변

7

if ([mois isEqualToString:@"january"]) 당신이 찾고있는 것입니다.

Objective-C의 여러 클래스에 이러한 isEqualTo: 메서드가있는 이유는 포인터가 아닌 포인터를 비교하는 것입니다.

1

당신은 [mois isEqualToString:@"january"]

0

는 아이폰 OS가 제공하는 날짜 함수를 사용하려고한다. NSDate 및 NSDateFormatter 살펴보기

날짜 함수를 사용하여 월 이름을 월 코드로 변환하는 SDK를 얻을 수 있습니다. 또한 월이 다른 언어로되어 있는지 또는 대소 문자가 다른 경우 또는 '1 월'대신 '1 월'이 표시되는지 걱정할 필요가 없습니다.

-1

NSString은 변경 가능하지 않습니까? NSMutableString을 사용해야하거나 mois = [NSString stringWithString : @ "01"]; 이 도움이

희망, 나단

+0

왜 아래 표를 보냅니 까? 내가 틀렸다는 것이 행복 할 때, 이유를 아는 것이 좋을 것입니다. –

+0

문자열이 변경되지 않고, mois에 저장된 포인터 만 변경되고 있습니다. mois는 "February"가 포함 된 메모리 위치를 가리킨 다음 mois는 "02"가 포함 된 메모리 위치를 가리 키도록 지시합니다. 문자열은 변경되지 않고 mois의 포인터 일뿐입니다. –

0

있는 NSString은 mois == 사용할 수없는 이유 객체입니다 @ "1월". 메서드 isEqualToString : (NSString *) aString을 사용해야합니다.

니콜라.