Program Tip

int를 stringWithFormat에 어떻게 전달해야합니까?

programtip 2020. 11. 12. 20:08
반응형

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"를 사용해야합니다.

흥미 롭습니다. 팁을 주셔서 감사합니다. 저는 NSIntegers 와 함께 @ "% 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

반응형