2014-09-20 4 views
0

저는 베타 Xcode를 사용하여 신속한 StriteKit에서 게임을 진행하고있었습니다. 하지만 이제는 최종 릴리스에서 나는이 모든 것을 해결할 수 있었다. xcode 6 최종 릴리즈의 컴파일러 오류

는 베타 XCODE를 사용 오류없이 MY ORIGINAL CODE WAS :

bird.zRotation = self.clamp(-1, max: 0.5, value: bird.physicsBody.velocity.dy *  (bird.physicsBody?.velocity.dy < 0 ?0.003 : 0.001)) 

그러나 엑스 코드는 최종 릴리스는 진술 physicsBody에 컴파일러 오류를 나타냅니다 : '? SKphysicsBody를' 속도라는 멤버가 없습니다. '?'을 추가하여이 문제를 해결했습니다. physicsBody에 대한 선택적 유형.

bird.zRotation = self.clamp(-1, max: 0.5, value: bird.physicsBody?.velocity.dy *  (bird.physicsBody?.velocity.dy < 0 ?0.003 : 0.001)) 

그러나 이번에는 GGFloat의 래핑되지 않은 새로운 오류가 나타납니다. '!' dy 또는 '?'뒤에 여전히 컴파일러가 삭제를 제안하면 Postfix가 '?' 선택적 유형을 가져야합니다. type은 CGFloat입니다.

정확히 무슨 일이 벌어지고 있는지에 대한 정보를 찾으려고했지만이 오류를 해결할 수 없습니다. 도와주세요.

답변

0

Xcode가 잠재적으로 nil 값에 대해 산술 연산을 수행하려고 혼란을 일으킬 수 있습니다. 나는 self.clamp 호출에서 선택자를 옮기려고했다. 또한 세 번째 점검 주위의 간격에주의하십시오. ? 연산자에 인접한 값의 랩핑을 시도 중일 수 있습니다.

if let dy = bird.physicsBody?.velocity.dy { 
    self.clamp(-1, max: 0.5, value: dy * ((dy < 0) ? 0.003 : 0.001) 
} 
+0

시도는 조언이 일을 주셔서 감사합니다. 아직도 원래 문장을 고치려고했지만 운이 없다. 고맙습니다 –