2011-10-03 8 views
0

안드로이드에서 plist 파서를 구문 분석하여 해시 맵을로드하려고합니다. 여기에서 plist 파서를 사용합니다 : https://github.com/ZhouWeikuan/cocos2d. 이것은 과거에는 정상적으로 작동했지만, 최근에는 (해싱 후)이 해시 맵을 사용할 때 내 프로그램에서 널 포인터 예외가 발생했습니다. 디버깅하려고하면 Eclipse가 이상한 행동을 시작합니다. 파서는 해시 맵을 반환하고 변수보기에서 그 값을 볼 수 있습니다. 'worldMap'에 지정하는 선 위로 넘어갈 때 Eclipse가 중단됩니다. 디버그 모드에서 worldMap의 값을 보려고 할 때 비어있는 행은 볼 수 있지만 아무 값도 볼 수 없습니다. 결국에는 eclipse가 충돌합니다.해시 맵 크래킹 이식

Map worlds = (Map)getWorlds().get("Worlds"); 
Map worldMap = (Map)worlds.get(String.valueOf(world)); 
Map levels = (Map)worldMap.get("Levels"); 

그러나 프로그램을 정상적으로 실행하면 null 포인터 예외가 나중에 이러한 행을지나옵니다. 내가 디버그려고 할 때 세드릭 또한, 그것은 항상

사람이 알고 있나요 ... 내가이 버그의 원인을 찾는 정말 힘든 시간을 보내고있어 동일한 위치에 충돌하지 않습니다?

답변

0

무슨 일이 일어나는지 확실히 알 수는 없지만 NullPointerException은 큰 힌트입니다.

은 위의 예제 코드의 각 줄 끝에서 일부 널 (null) 검사에 추가하고 난 당신이 꽤 빨리 오류를 추적 할 수있을 것입니다 내기 :

Map whatEverThisIs = (Map)getWorlds(); 
if (whatEverThisIs == null) { 
    /* Do something here */ 
} 
Map worlds = (Map)whatEverThisIs.get("Worlds"); 
if (worlds == null) { 
    /* Do something here */ 
} 
Map worldMap = (Map)worlds.get(String.valueOf(world)); 
if (worldMap == null) { 
    /* Do something here */ 
} 
Map levels = (Map)worldMap.get("Levels"); 
if (levels == null) { 
    /* Do something here */ 
} 
+0

글쎄, ** K f를. 나는 그 질문을하기 전에 모든 것을 두 번씩 점검했다고 생각했습니다. 모든 키가 문자열 일 때 * map * .get (* integervalue *)를 수행 중이었습니다 ... – kuxi

+0

굉장히 기쁘게 생각합니다! – claymore1977

관련 문제