2013-06-02 3 views
3

내가 좋아하는 NSLog를 사용하려고에 NSLog에있는 NSString을 넣어하는 방법 :여러 인수

NSLog(@"one" @"two" @"three"); 

이 작동하고 인쇄 콘솔에서 onetwothree. 하지만 난이

NSString *s = [NSString stringWithFormat:@"three"]; 
NSLog(@"one" @"two" s); 

위 나던 작품처럼 사용하려고하고 내가 " ')'예상 '하는 컴파일시 오류가 발생하는 경우. 나는 무엇을해야할지 모르겠다.

어떤 도움이 필요합니까?

P. 나는 XcodeColors를 사용하려고 노력하고 있으며 위와 같이 NSLog에 인수를 주어야합니다. 그러니 아래처럼 사용하지 마십시오. 나는이 작품을 알아. 위와 같이 인수를 NSLog에 전달해야합니다.

NSString *s = [NSString stringWithFormat:@"%@ %@ %@", @"one", @"two", @"three"]; 
NSLog(s, nil); 

편집 :

내가 원하는 결과를 얻기 위해이 같은 NSLog를 사용할 수 있습니다

NSString *s = @"ss"; 
NSLog(@"one" @"two" @"%@",s); 

내 다른 질문으로 이어집니다. NSLog 매크로를 만들고 싶습니다. 그것은 나에게 같은 오류 " ')'예상"

을 제공

LOG_X(@"one") 
LOG_X(@"one" @"two" @"three") 

하지만 다음

NSString *s = @"one two three"; 
LOG_X(s); 

작동하지 않습니다 : 다음 작품은 지금

LOG_X(val) NSLog(@"xx" @"yy" @"%@",val @"zz") 

: 같은 매크로가 보인다

+0

두 번째 오류는 어디에서 발생합니까? –

+0

LOG_X에서 오류가 발생했습니다 –

+0

마지막 문자열에서 @ "% @"만 사용할 수 있습니다. 그 사이에 왜 나는 오류가 발생하지 않는지. –

답변

7

NSString 변수의 내용을 인쇄하려면 NSLog , 당신은 형식화 된 문자열처럼 취급해야합니다.

그래서 대신 :

NSLog(@"one" @"two" s);

사용 :

NSLog(@"one" @"two" @"%@", s);

ADDITION :

매크로의 끝에서 쉼표와 val를 삽입해야합니다. 모양은 다음과 같습니다 :

#define LOG_X(val) NSLog(@"xx" @"yy" @"%@" @"zz", val).

+0

고맙습니다. 이게 내 또 다른 질문으로 이어집니다. 내 편집을 읽어주십시오. –

+0

효과가있었습니다. 도와 주셔서 감사합니다 :) –

+0

전혀 문제가되지 않습니다. –

6

변수로는 할 수 없습니다. 문자열 리터럴과 함께 작동하는 이유는 공백으로 구분 된 여러 리터럴을 쓸 때 컴파일러가 단일 문자열 리터럴로 결합하기 때문입니다.

해결 방법은 3 % @ specifiers 형식 문자열을 사용하는 것이 좋습니다. 비슷한 방법으로 세 값의 서식을 지정할 수도 있습니다.

+2

+1 ... –