2008-11-03 6 views
0

Mac 관련 모든 것에 대해 조사 할 때 Cocoa API에 대한 검색 테스트를 작성하고 있습니다. 저는 현재 URL 인코딩을위한 최선의 방법을 발견하려고합니다. 내가 의도적으로 고장의 원인이단위 테스트가 Mac 용 구글 도구 상자 사용 :STAssertEqualStrings의 이스케이프 시퀀스

NSString* expected = @"ab%%20c"; 
NSString* encoded = @"ab c"; 
STAssertEqualStrings(expected, encoded, @"Expected [%s] actual [%s]", [expected UTF8String], [encoded UTF8String]); 

을하고는 "AB P = AB를 C!"출력이 나를 던지고에 덤프 쓰레기를 뿌려줍니다. 마치 퍼센트 기호가 제대로 이스케이프 처리되지 않은 것처럼 보입니다. 그러나 나는 그것이 알 수 있습니다. 내 주된 질문은 올바르게 형성된 오류 메시지를 어떻게 받으면서 오렌지 대신 사과를 다룰 수 있는지를 묻는 것입니다.

* 업데이트 Stackoverflow는 원래 게시물의 쓰레기를 제거하고있었습니다. 위의 실패는 실패 메시지의 문제점을 설명하기위한 의도입니다. 오류 메시지에 표시되는 가비지는 실제 문자열의 내용을 자세히 설명하지 않기 때문에 걱정됩니다. 오류는 "어설 션이 실패했습니다. ab [apple-symbol] c! = abc"여기서 퍼센트 기호 대신 메시지에 사과 문자가 나타납니다. 실제로는 인코딩 된 메서드 호출의 반환 및 어설 션 오류 메시지를 사용하여 문자열의 내용을 검사하고 싶습니다.

+0

나는이 질문을 이해하고 있는지 잘 모르겠다. 예상 된 값이 인코딩 된 값과 같지 않으므로 어설 션이 실패합니다. 제대로 작동하고있는 것 같습니다. 또는 나는 무엇인가 놓치고 있냐? –

+0

명확성을 위해 위의 업데이트를 참조하십시오. – Cliff

+0

솔루션을 찾았습니까? – JoePasq

답변

2

컴파일 타임에 적용되는 백 슬래시 이스케이프는 백분율 기호 이스케이프 처리와 함께 사용되며 printf과 같은 함수 및 메서드로 형식 문자열에 적용됩니다. expected은 이러한 함수에 의해 처리되지 않으므로 백분율 기호는 아무 것도 이스케이프 처리하지 않습니다.

그렇다면 StackOverflow가 메시지를 잘못 작성하지 않는 한 백분율 기호는 "ab %% c! = abc"에 있어야합니다.

관련 문제