NSInteger를 NSString 데이터 유형으로 어떻게 변환합니까?


137

어떻게 변환을 수행 NSInteger받는NSString 데이터 유형을?

월은 다음과 같이 시도했습니다 NSInteger.

  NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];

답변:


267

NSInteger는 객체가 아니며 long현재 64 비트 아키텍처의 정의와 일치시키기 위해 캐스트합니다 .

NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];


11
나는 이것을 시도했지만 경고가 계속 발생했다 Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *'). 대신 Apple 문서 에 따르면 , 나는 다음과 같이 갔다NSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
Steven

8
새로운 A7 칩과 같은 64 비트 프로세서에서 앱이 64 비트 용으로 컴파일 된 경우 NSInteger는 실제로 int가 아닌 long입니다. 캐스트 (int) 월을 수행하는 것은 일반적인 경우 64 비트 플랫폼에서 파괴적입니다. Apple 플랫폼을 독점적으로 타겟팅하는 경우 Aleksey Kozhevnikov의 답변과 같이 Objective-C 방식을 선호하거나 int와 long 모두에서 작동하는 유사한 항목을 선호하십시오 (예 : long ;-) 부호가 없지만 (음수가 아닌 의미) Andreas에 있습니다. 레이의 대답.
Louis St-Amour

1
@Steven 나는 현재보다 적용 가능한 답변을 얻기 위해 답변을 삭제하려고 시도했지만 수락 된 답변은 삭제할 수 없습니다. 따라서 경고를 유발하지 않는 빠른 솔루션을 찾는 사람들에게 유용한 정보를 제공하기 위해 최소한 내용을 조정하려고했습니다.
luvieere

@luvieere Apple의 문서 는 NSInteger를 형식 문자열로 취급하는 방법을 명확하게 설명합니다. 이 조언에 따라 답변을 업데이트해야합니다.
Nikolai Ruhe

2
[@(integerValue) stringValue]더 깨끗한 접근법입니다.
Zorayr


76

현대 목표 -C

NSInteger방법 갖는 stringValue리터로에도 사용될 수있다

NSString *integerAsString1 = [@12 stringValue];

NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];

매우 간단합니다. 그렇지 않습니까?

빠른

var integerAsString = String(integer)

8

%zd%tu32 비트 및 64 비트 아키텍처 모두에서 캐스트 및 경고가없는 NSInteger ( NSUInteger의 경우)에서 작동합니다 . 이것이 " 권장 방법 " 이 아닌 이유를 모르겠습니다 .

NSString *string = [NSString stringWithFormat:@"%zd", month];

왜 이것이 효과가 있는지에 관심 이 있다면이 질문을 참조하십시오 .


5

쉬운 방법 :

NSInteger value = x;
NSString *string = [@(value) stringValue];

여기에서 @(value)주어진 함수를 필요한 함수를 호출 할 수 NSInteger있는 NSNumber객체 로 변환합니다 stringValue.


2

에 대한 지원으로 컴파일 할 때 arm64경고가 생성되지 않습니다.

[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];

1

시도해 볼 수도 있습니다 :

NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];

0

답이 주어 지지만 어떤 상황에서는 이것이 NSInteger에서 문자열을 얻는 흥미로운 방법이 될 것이라고 생각합니다

NSInteger value = 12;
NSString * string = [NSString stringWithFormat:@"%0.0f", (float)value];

0

이 경우 NSNumber가 적합 할 수 있습니다.

NSString *inStr = [NSString stringWithFormat:@"%d", 
                    [NSNumber numberWithInteger:[month intValue]]];
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.