2017-10-14 14 views
0

Swift 기반 iOS 응용 프로그램에 대한 기본 트리 데이터 구조를 만들었으므로 디버깅을 위해 콘솔에 출력 할 수 있기를 원했습니다. 그래서 트리를 통과하여 (preorder) 함수를 작성하고 각 노드의 값을 트리의 노드 깊이에 따라 여러 개의 탭이 삽입 된 자체 행에 인쇄합니다. 나는 빨리이 좋았Xcode 디버깅 콘솔에서 다중 행 문자열 인쇄

root 
    node1 
     node1_1 
     node1_2 
    node2 
     node2_1 
      node2_1_1 
     node2_2 
    node3 
     node3_1 

등, 그리고 그것은 나를 그냥 코드의 중요한 장소에 printInfo()를 호출 할 수 있지만 : 디버깅 콘솔에서 코드 어딘가에 함수를 호출하여이 같은 인쇄 것이다 내가 중단 점에서 멈출 때처럼 자리에 문자열 값을 인쇄 할 수 있어야한다는 것을 깨달았다. 그래서 모든 새줄 (\n)과 탭 (\t)을 사용하여 트리에서 String을 빌드 할 계산 된 속성 인 infoString을 만들었습니다. 중단 점에있을 때 디버그 콘솔에 출력 할 수 있다고 생각했습니다.

나는 명령 po infoString 그것을 밖으로 시도했지만 무엇 콘솔에 출력한다하는 것은 이것이다 : 그 문자열이 무엇 때문에, 기술적으로 정확 인 "root\n\tnode1\n\t\tnode1_1\n\t\tnode1_2\n\tnode2\n\t\tnode2_1\n\t\t\tnode2_1_1\n\t\tnode2_2\n\tnode3\n\t\tnode3_1"하지만 실제로 개행을보고 싶어하고 탭.

그럼 줄을 인쇄하여 줄 바꿈과 탭을 볼 수 있습니까?

답변

0

잠시 동안 StackOverflow를 파고 p (인쇄물)과 po (인쇄물) 사이의 차이점을 조사했으며 확실히 배웠지 만 여전히 찾고있는 것을 찾을 수 없었습니다.

은 그럼 내가 수동으로 이렇게 큰 따옴표 "\"로 대체 될 문자 (의 버전을 "탈출"로 특정 문자를 대체하는 데 필요한 몇 가지 암호 인코딩 코드를 디버깅하고 다른 시간, 그리고 단일 리콜 견적 '\'으로 바뀝니다. 내가 문자를 제대로 바꾸려고했는지 테스트 할 때 문자열을 출력하면 출력 문자열을 읽는 데 어려움이 생겼습니다. 나는 그것을 어떻게 우연히 발견했는지 기억하지 못한다. 그러나 나는 StringNSString으로 바꾸고 그런 식으로 인쇄했다.

Voila! 이스케이프 된 문자가 정확히 나타나야 올바르게 표시됩니다. 그 트릭을 기억하면서, 내 infoString var로 시도해 보았습니다.

확실히 제가 po infoString as NSString을 시도했을 때 기능 버전과 똑같이 인쇄되었습니다.

그래서 그 트릭입니다. 디버그 콘솔에서 인쇄 할 때 StringNSString으로 변환하십시오.

다른 권장 사항이 있으면 언제든지 추가하십시오.