답변:
NSInteger는 객체가 아니며 long
현재 64 비트 아키텍처의 정의와 일치시키기 위해 캐스트합니다 .
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
[@(integerValue) stringValue]
더 깨끗한 접근법입니다.
Obj-C 방법 =) :
NSString *inStr = [@(month) stringValue];
%zd
%tu
32 비트 및 64 비트 아키텍처 모두에서 캐스트 및 경고가없는 NSInteger ( NSUInteger의 경우)에서 작동합니다 . 이것이 " 권장 방법 " 이 아닌 이유를 모르겠습니다 .
NSString *string = [NSString stringWithFormat:@"%zd", month];
왜 이것이 효과가 있는지에 관심 이 있다면이 질문을 참조하십시오 .
쉬운 방법 :
NSInteger value = x;
NSString *string = [@(value) stringValue];
여기에서 @(value)
주어진 함수를 필요한 함수를 호출 할 수 NSInteger
있는 NSNumber
객체 로 변환합니다 stringValue
.
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')
. 대신 Apple 문서 에 따르면 , 나는 다음과 같이 갔다NSString *inStr = [NSString stringWithFormat:@"%d", (int)month];