2010-06-19 7 views
0

예 : 많은 작업을 수행하는 복잡한 방법이 있습니다. 결국 NSLog를 사용하여 보고서를 인쇄하려고합니다. NSLog는 문자열과 임의의 수의 인수를 원합니다.NSLog의 인수를 동적으로 구축하는 방법은 무엇입니까?

B

C가

D

는 E

F

그것은 일어날 수 : 그래서 기록 할 수 있습니다이 가능한 값이 말할 수 있습니다 예를 들어 C와 D는 기록되지 않지만 whol e 휴식. 어떻게하면 NSLog의 가치 주장을 나타내는 역동적 인 것을 만들 수 있습니까?

NSPredicate와 SUBQUERY가 더 간단 할 수 있으므로이 질문에 NSLog를 선택합니다. NSMutableString 및 appendFormat을 사용하는 동안 동적으로 NSPredicate 형식 문자열을 작성하는 것은 불가능한 것처럼 보입니다. ... 항상 술어에 대한 컴파일 오류가 발생합니다. 나는 NSPredicate가 NSMutableString-appendFormat보다 형식 값이 다르다는 것을 알고있다.

그래서 함께 자 NSPredicate를 공급 할 수있는 방법이 있다면 :. 멋진 것

"인수 1) 거대한, 동적으로 생성 된 형식 문자열 2) 거대한, 동적으로 생성 된"목록 "

.이 같은
+0

, 정교한 조건은 종종 더 나은 구조 대신 형식의 개체로 하위 조건의 명시 적 인스턴스를 사용하여 생성된다 문자열 – ohhorob

답변

1

당신의 근본적인 문제는 그냥 +predicateWithFormat:argumentArray:을 사용하여 문제가되지 않습니다 어떤 문제가 당신이다 이걸 지어서?

+0

안녕하세요 롭, 그게 내가 필요한 옳은 일 이었어. 완전한! – dontWatchMyProfile

+0

도움이 되니 기쁩니다. 복잡한 빌드 작업을 수행하는 경우 실제 술어를 손으로 작성하고 형식 문자열을 생략하는 것이 좋습니다. 간단한 검색 문법을 술어로 변환 할 때이 기술을 사용합니다. 술어가 실제로 큰 경우, 문자열 분석을 건너 뛸 때 더 빠를 수도 있습니다. 다음에서 "코드에서 직접 술어 만들기"를 참조하십시오. http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/Predicates/Articles/pCreating.html –

2

뭔가가, 조건부로 문자열 부분을 추가 수행해야합니다.

NSMutableString* logMsg = [NSMutableString stringWithFormat:@"%@ %@ %@", A, B, C]; 

if (C) [logMsg appendFormat:@" %@", C]; 
if (D) [logMsg appendFormat:@" %@", D]; 

[logMsg appendFormat:@" %@ %@", E, F]; 

NSLog(@"%@", logMsg); 
+0

**'[NSMutableString' **'stringWithFormat :'... – kennytm

+0

네, 나도 고정 된 것을 보았습니다. – progrmr

1

한 번에 출력 할 변수 목록을 수집하는 경우 NSMutableArray을 사용하여 필요에 따라 로그 출력 줄을 추가하면됩니다. 그런 과정의 끝에서, 문자열로 구성 요소를 joing : 술어에 대한 다른 질문으로 당

NSMutableArray *logLines = [[NSMutable alloc] initWithCapacity:10]; 
... 
NSLog(@"Multiple-line output:\n%@",[logLines componentsJoinedByString:@"\n"]); 
[logLines release]; 
관련 문제