2017-11-05 2 views
-3

을 풀기 동안 예기치 않게 내가 여기에 코드 줄의 오류가 전무을 발견스레드 1 : 치명적인 오류 : 옵션 값

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    hero.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 300)) 
} 

나는 코드 아주 새로운 그리고 난 밖으로 이유를 작동하는 데 문제가 있어요 이 오류가 발생합니다.

+0

'영웅'선언을 표시하십시오. – matt

+0

만약 그 라인에서 실패한다면, (a)'hero'는 암시 적으로 unwrapped 옵션입니다; 그리고 (b) 그것은 '없다'이다. 이 경우 우리는 선언 한 방식뿐만 아니라 어떻게 인스턴스화 했는지도 확인할 필요가 있습니다. – Rob

+0

영웅과 문제가 있다면 주인공을 넣으려고합니다 .physicsBody? .applyImpulse (CGVector (dx : 0, dy : 300)). 그게 그럴 수 없다면. 충돌하는 경우 다른 것이 있습니다. – Arrabidas92

답변

-4

physicsBody는 다른 문제가있을 수 전무

if hero.physicsBody != nil { 
    hero.physicsBody!.applyImplulse(CGVector(dx: 0, dy: 300)) 
}else { 
    //do whatever should be done when there is no physicsBody 
} 

을 테스트 할 수 있습니다, 아마 전무하지만 그게 내가 당신의 프로그램에 대한 자세한 내용을 모르고 제안 할 수있는 모든

당신이 모르는 경우입니다 내가 의미하는 바는 선택형 데이터 유형에 대해 더 많이 읽는 것입니다. What is an optional value in Swift?

+0

답장을 보내 주셔서 대단히 감사합니다. 분명히 이해할 수있는 대안으로 다시 잠길 것입니다! – Nemo

+1

@Nemo이 줄은 문제의 원인이 아닙니다. 선택적 체인을 사용하므로 physicsBody가 nil이면 메서드 applyImpulse가 호출되지 않습니다. 코드가 자동으로 실패합니다. –

관련 문제