2017-12-26 36 views
0
를 사용하여 바인딩 이니셜을 던져

내가 엑스 코드 주위에 내 길을 발견하고 애플의 개발자 웹 사이트의 지침을 사용하여 기본 라이브 전사 응용 프로그램을 구축하기 위해 노력하고있어 (link)엑스 코드는 조건이 AVAudioInputNode

는 다음 줄은 아래와 같은 오류가 발생합니다 :

guard let inputNode = audioEngine.inputNode else { fatalError("Audio engine has no input node") } 

0 "조건 바인딩에 대한 이니셜은하지 AVAudioInputNode를 선택 유형이 있어야합니다"

비슷한 오류가있는 모든 stackoverflow 게시물을 확인했지만 아무 것도 작동하지 않았습니다. 위의 링크에서 Apple의 프로젝트를 다운로드 받았고 코드에 오류가 없습니다. 어딘가에 어리석은 실수를 범한 경우를 대비하여 프로젝트의 코드를 복사했습니다.하지만 프로젝트에서 똑같은 코드가 항상 예외를 throw합니다.

내가 엑스 코드 9.2을 사용하고 난 덕분에 아이폰 OS (11)에 대한

개발하고 있어요!

답변

0

귀하의 사례에있는 보호 진술은 중복됩니다. inputNode은 선택 사항이 아니므로 아무 값도 보유 할 수 없습니다. 그래서 그것을 지키기는 불필요한 오류 메시지입니다.

당신은 가드 문을 생략 할 수 있습니다 및 다른 블록으로 대체 :

let inputNode = audioEngine.inputNode 
+0

말이,하지만 난 그것을 어떻게 수정합니까? "guard"를 제거하고 "let ..."으로두면 Xcode가 나머지 코드보다 오류를 발생시킵니다. 감사! –

+0

@ Justin915 나는 내 대답을 편집했다. let 문을 사용할 수 있습니다 (그러나 else 블록을 사용하지 않으면 의미가 없으며 guard 키워드가없는 잘못된 구문입니다) – giorashc

+0

대단히 감사합니다. –