int를 stringWithFormat에 어떻게 전달해야합니까?
stringWithFormat을 사용하여 레이블의 텍스트 속성에 숫자 값을 설정하려고하는데 다음 코드가 작동하지 않습니다. int를 NSString으로 캐스팅 할 수 없습니다. 메서드가 int를 NSString으로 자동으로 변환하는 방법을 알고있을 것으로 기대했습니다.
여기서 무엇을해야합니까?
- (IBAction) increment: (id) sender
{
int count = 1;
label.text = [NSString stringWithFormat:@"%@", count];
}
이 작업을 수행:
label.text = [NSString stringWithFormat:@"%d", count];
@ "% d"는 32 비트에서만 작동합니다. 64 비트 플랫폼 용으로 컴파일 한 경우 호환성을 위해 NSInteger를 사용하기 시작하면 형식 지정자로 @ "% ld"를 사용해야합니다.
Marc Charbonneau는 다음과 같이 썼습니다.
@ "% d"는 32 비트에서만 작동합니다. 64 비트 플랫폼 용으로 컴파일 한 경우 호환성을 위해 NSInteger를 사용하기 시작하면 형식 지정자로 @ "% ld"를 사용해야합니다.
흥미 롭습니다. 팁을 주셔서 감사합니다. 저는 NSInteger
s 와 함께 @ "% d"를 사용하고있었습니다 !
SDK 문서는 또한 이 경우 (@ "% ld"와 일치 하도록) 캐스팅 NSInteger
할 것을 권장합니다 long
. 예 :
NSInteger i = 42;
label.text = [NSString stringWithFormat:@"%ld", (long)i];
출처 : Cocoa 용 문자열 프로그래밍 가이드-문자열 형식 지정자 (iPhone 개발자 등록 필요)
%d
또는 %i
정수 를 사용하려고합니다 . %@
개체에 사용됩니다.
그러나 다음 코드는 동일한 작업을 수행하고 훨씬 더 명확하다는 점에 주목할 가치가 있습니다.
label.intValue = count;
그리고 코미디 가치를 위해 :
label.text = [NSString stringWithFormat:@"%@", [NSNumber numberWithInt:count]];
(언젠가 NSNumber를 다루는 경우 유용 할 수 있지만)
32 비트 및 64 비트 안전을 위해 Boxed Expressions 중 하나를 사용하십시오 .
label.text = [NSString stringWithFormat:@"%@", @(count).stringValue];
게시 한 스 니펫은 수행하려는 작업을 보여주는 샘플 일 뿐입니 까?
내가 묻는 이유는 메소드 이름을 지정 increment
했지만 값을 증가시키는 대신 텍스트 레이블의 값을 설정하는 데 사용하는 것 같습니다.
정수 값을 설정하고 레이블에이 값을 표시하는 등 좀 더 복잡한 작업을 수행하려는 경우 바인딩 사용을 고려할 수 있습니다. 예 :
당신은 속성을 선언 count
하고 increment
행동은 무엇이든이 값을 설정 한 후 IB, 당신은의 값으로 레이블의 텍스트를 결합 count
. 에서 키 값 코딩 (KVC)을 따르기 만하면 count
레이블 표시를 업데이트하기 위해 코드를 작성할 필요가 없습니다. 그리고 디자인 관점에서 보면 결합이 느슨합니다.
잊지 마세요 long long int
:
long long int id = [obj.id longLongValue];
[NSString stringWithFormat:@"this is my id: %lld", id]
label.text = [NSString stringWithFormat:@"%d", XYZ];
//result: label.text = XYZ
//use %d for int values
NSString * formattedname;
NSString * firstname;
NSString * middlename;
NSString * lastname;
firstname = @"My First Name";
middlename = @"My Middle Name";
lastname = @"My Last Name";
formattedname = [NSString stringWithFormat:@"My Full Name: %@ %@ %@", firstname, middlename, lastname];
NSLog(@"\n\nHere is the Formatted Name:\n%@\n\n", formattedname);
/*
Result:
Here is the Formatted Name:
My Full Name: My First Name My Middle Name My Last Name
*/
참고 URL : https://stackoverflow.com/questions/384089/how-should-i-pass-an-int-into-stringwithformat
'Program Tip' 카테고리의 다른 글
Android Studio에서 제목 표시 줄을 제거하려면 어떻게합니까? (0) | 2020.11.12 |
---|---|
OwinStartupAttribute 오류가 포함 된 어셈블리를 찾을 수 없습니다. (0) | 2020.11.12 |
"Maven 프로젝트 업데이트"중에 내부 오류가 발생했습니다. (0) | 2020.11.12 |
Django는 특정 순서로 id 배열에서 QuerySet을 가져옵니다. (0) | 2020.11.12 |
작업 표시 줄의 검색보기가 작동하지 않습니다. (0) | 2020.11.12 |