program story

BOOL에서 NSString으로

inputbox 2020. 12. 6. 21:31
반응형

BOOL에서 NSString으로


를 반환하는 메서드가있는 경우 콘솔에서 인쇄 할 수 있도록 BOOL어떻게 캐스트 NSString합니까?

예를 들어,이 작업을 시도했지만 작동하지 않습니다.

NSLog(@"Is Kind of NSString:", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");

하지만 실제로 반환 값을 NSString으로 바꾸고 싶습니다. 기본 데이터 유형이라는 것을 알고 있으므로 이에 대한 메서드를 호출 할 수 없습니다. 문자열을 별도로 생성 한 다음 NSString의 메서드에서 Bool을 매개 변수로 사용해야합니까?


형식 문자열에 형식 지정자가 필요합니다.

NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");

용도 삼항 연산자를 :

BOOl isKind= [thing isKindOfClass:[NSString class]];

NSLog(@"Is Kind of NSString: %d", isKind);
NSLog(@"Is Kind of NSString: %@", isKind ? @"YES" : @"NO");

백그라운드에서 BOOL은 int 유형처럼 작동하므로 % i를 사용하여 NSLog에서 BOOL 유형의 값을 테스트 할 수 있습니다.

BOOL a = YES;
BOOL b = NO;
NSLog(@"a is %i and b is %i", a, b);

// Output: a is 1 and b is 0

그래서 나는 이것이 정말 오래되었다는 것을 알고 있지만 나는 내 해결책을 반지에 던지는 것이 좋을 것이라고 생각했습니다. 나는한다:

#define NSStringFromBOOL(aBOOL)    ((aBOOL) ? @"YES" : @"NO")
NSLog(@"Is Kind of NSString: %@", NSStringFromBOOL([thing isKindOfClass: [NSString class]]);

나는 이것이 Apple의 to-string 매크로 ( NSStringFromClass,, NSStringFromRect등) 중 일부와 더 일치 NSStringFromSelector하고 일반적으로 즉석에서 사용하기가 매우 간단 하다고 생각합니다 . 해당 매크로를 전역 적으로 액세스 할 수 있거나 자주 가져 오는 곳에 두십시오!


다음과 같이 BOOL을 인쇄합니다.

NSLog(@"The BOOL value is %s", theBoolValue ? "YES" : "NO");

또는 새로운 @표기법으로 다음을 수행 할 수 있습니다.

NSLog(@"The BOOL value is %@", @(theBoolValue));

NSLog는 간단한 printf 스타일 호출 형식을 사용하며 코드 예제에는 객체를 포함하는 데 필요한 문자 시퀀스가 ​​없습니다.

이것은 작동합니다.

NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");

우선 포맷 지정자를 추가해야합니다 %@. 다음과 같이 표시되어야합니다.

NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");

또한 당신은에서 변환을 추출 할 수 있습니다 BOOLNSString애플이했던 것처럼 통근 기능 NSStringFromCGRect, NSStringFromClass

utils 파일을 생성하거나 기존 파일 헤더에 다음 코드를 추가합니다.

//NSString+TypeConversion.h

extern NSString *NSStringFromBOOL(BOOL aBool);

또한 다음 코드를 구현에 추가하십시오.

//NSString+TypeConversion.m

NSString *NSStringFromBOOL(BOOL aBool)
{
    return aBool ? @"YES" : @"NO";
}

이제이 함수를 다른 곳에서 사용할 수 있으며 코드가 더 명확하고 재사용 가능해집니다.

#import "NSString+TypesConversion.h"

NSLog(@"Is Kind of NSString: %@", NSStringFromBOOL([thing isKindOfClass:[NSString class]]));

이것은 나를 위해 일합니다.

NSLog(@"The BOOL value is %@", theBoolValue ? "YES" : "NO");

참고 URL : https://stackoverflow.com/questions/738524/bool-to-nsstring

반응형