int를 NSString으로 변환하는 방법?


101

나는를 변환하고 싶습니다 intA를 NSString목적 C.에

어떻게 할 수 있습니까?

답변:


147

프리미티브는 @()표현 을 사용하여 객체로 변환 할 수 있습니다 . 너무 짧은 방식으로 변환하는 것입니다 intNSNumber와 가진 문자열 표현을 데리러 stringValue방법 :

NSString *strValue = [@(myInt) stringValue];

또는

NSString *strValue = @(myInt).stringValue;

12
약간 덜 NSString *strValue = @(myInt).stringValue;
장황함

@DielsonSales 일부 객체에는는 stringValue없지만 모두 있습니다 description. 따라서 사용에 익숙해지는 것이 좋습니다 description( NSNumber여기서 걱정할 필요 없음). 다음을 시도해보십시오 ( description날짜가 인쇄되지만 stringValue충돌합니다) :NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
Islam Q.

1
@IslamQ. @(myInt)A는 박스 표현 에 대한 [NSNumber numberWithInt:]과 int를 부여 할 때 항상의 NSNumber를 반환합니다. [NSNumber stringValue]항상 NSString을 반환합니다. 주석 코드 (id)에서 다른 유형으로 강제 캐스팅 하고 할당하는 것은 명확한 프로그래밍 실수입니다. 절대 그렇게해서는 안됩니다. 그것은 방법을 뒤흔들고 그 방법이 원래하고 있던 일을하지 않는다는 주장을하는 것과 같습니다.
Cœur

1
@IslamQ. 충돌 연산자 ( !) 를 사용하지 않고 주석을 Swift로 변환 하면 Objective-C에서 잘못하고 있음을 알 수 있습니다. 객체 test가 당신에 의해 생성되지 않았다면 그것은 당신의 책임이 아닙니다. isKindOfClass:수신 된 모든 매개 변수 를 호출하려고 시도 할 수 있지만 (예를 들어 NSObject 대신 구조체를 전달하여) 속일 수 있습니다. 그러니 그렇게하지 마세요 : 예상되는 유형을 명시 적으로 문서화하십시오.
Cœur

쾨르 @ 과정에 객체 캐스팅의 (id)실수입니다, 그것은 IMO 있다는 점 데모 단지 있었다 description이상이 바람직하다 stringValue(내가 잘못 될 수 년 동안 ObjC에서 프로그래밍하지 않은 경우)
이슬람 Q.

144
NSString *string = [NSString stringWithFormat:@"%d", theinteger];

기본 유형을 알고있을 때 @Elist, 코드에서 중간 NSNumber를 피함으로써 오버 헤드가 약간 줄어들 수 있는지 궁금합니다. @(myInt)A는 박스 표현 , 그것이의 NSNumber를 반환합니다.
Cœur

37
int i = 25;
NSString *myString = [NSString stringWithFormat:@"%d",i];

이것은 여러 가지 방법 중 하나입니다.


2

이 문자열이 최종 사용자에게 표시되는 경우 NSNumberFormatter. 이렇게하면 수천 개의 구분 기호가 추가되고 사용자의 현지화 설정이 적용됩니다.

NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];

예를 들어 미국에서는 문자열이 생성 10,000되지만 독일에서는 10.000.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.