2010-02-07 6 views
0

데이터 파일을 구문 분석하고 파일에서 읽은 키 - 값을 NSMutableDictionary에 추가합니다.NSMutableDictionary가 값 또는 따옴표가있는 키를 표시하는 경우가 있음

내가 발견 한 것을 나는 디버거에서 사전의 내용, 즉 인쇄 할 때 : 포 내 사전

일부 항목이 주위에 따옴표를하지 않는 몇 가지를. 왜 이런거야? 예를 들어

나는 참조 :

내가 파일에서 키와 값을 추출하기 위해 다음 줄을 사용하고
{ 
    "file_path"  = "../dat.txt" 
    another_path  = "aa.dat" 
    yet_another_path = bb.txt 
} 

만 필수 바이트

key_str = [[NSString alloc] initWithBytes:[data bytes] 
            length:total_bytes 
           encoding:NSUTF8StringEncoding]; 

val_str까지 데이터를 분석 한 후 같은 방식으로 파싱됩니다.

+0

어떤 디버거 (버전 포함)를 사용하고 있습니까? 명령 줄에서 GNU gdb 6.3.50-20050815 (XCode 3.2.1과 함께 제공되는 버전)를 실행할 때, 내가 보는 모든 키와 값은 큰 따옴표로 묶입니다. – outis

+0

예 ... "bb.txt"가 인용됩니다. 디버거 인 btw는이 포맷과는 아무런 관련이 없습니다. 문자열은 시스템 프레임 워크 내에서 완전히 생성됩니다. – bbum

+0

가능한 복제본 [NSMutableDictionary가 키와 값에 따옴표를 추가하는 이유 - 왜?] (http://stackoverflow.com/questions/2471398/nsmutabledictionary-is-adding-quotes-to-keys-and-values-why) – Apurv

답변

1

당신은 데이터 보관의 목적으로 -debugDescription 또는 -description 방법의 출력을 사용하지 말아야합니다 감사합니다. 형식은 구현 세부 사항이며 변경 될 수 있습니다.

NSPropertyListSerialization (및 관련)을 통해 보관 요구 사항을 해결하는 것이 좋습니다. 인간의 가독성과 비슷한 것이 필요한 경우 XML 형식을 제공합니다.

+0

답장 sofar. Mac에서 gdb 6.3.50-20050815를 사용하고 있습니다. 문제는 따옴표가 실제로 키의 일부로 끝나는 것입니다. 따라서 게시 된 예제에서 : po [myDictionary objectForKey : @ "file_path"] "file_path"에 사전에서 인용 부호가 있기 때문에이 작업이 실패합니다. 따옴표가 어떻게 거기에 있는지 나는 모른다. 그것이 내가 알아 내고 제거하고자하는 것입니다. –

+0

충분히 말할 수 없다 : ** 키를 생성하기 위해 -debugDescription이나 -description을 사용하지 마라. ** 이러한 메소드는 디버깅 툴 이외의 다른 목적을 위해 설계되지 않았다. – bbum

+0

나는 분명히 처음으로. 그래서 디버거에서 키를 생성하지 않습니다. "변수 이름"- "값"쌍을 포함하는 데이터 파일에서 해당 항목을 읽습니다. 이 토론의 목적을 위해 추가 정보로 디버그 출력 만 표시합니다. 그래서 "key_str"은 데이터 파일에서 구문 분석 한 것입니다. –

0

동일한 문제가 발생합니다. JSON 구문 분석기가 밑줄 문자가 포함 된 Keys를 따옴표로 묶을 때 문제가있는 것으로 보입니다. 따라서 filename의 키는 괜찮지 만 file_name의 키는 "file_name"으로 반환됩니다.

관련 문제