2014-10-28 3 views
1
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-au"]; 

이 정확한 코드 줄은 obj-c에서 언어를 변경하는 방법입니다. 하지만 누군가가 신속하게 구현되도록 내게 어떻게 말해 줄 수 있는지 궁금합니다. 문서에 코드 줄이 사용됩니다 ...다른 언어들 avfleechsynthesizer

init!(language language: String!) -> AVSpeechSynthesisVoice 

하지만 난 그것을 구현하는 것이 어디에서 이해할 수 없습니다/당신이 Type라는 이름의 유형에 대한 신속한 인터페이스에서 init(paramName: ParamType)를 참조

+0

문제는 AVSpeechSynthesisVoice와 아무런 관련이 없습니다. 문제는 스위프트를 모르는 것이므로 이니셜 라이저를 호출하는 방법을 이해할 수 없다는 것입니다. 즉, 당신이 정말로 묻고있는 것은 다음과 같습니다. Objective-C의이 코드를 나를 위해 Swift로 번역하십시오. Objective-C 코드의 모든 행에 대해이 작업을 수행 할 예정입니까? 아니면 직접 수행하도록 배웁니 다? 다음은 문서입니다. https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html#//apple_ref/doc/uid/TP40014097-CH18-XID_306 – matt

답변

2

, 당신 Type(paramName: paramValue) 구문으로 호출하십시오. 이 부분은 Initialization스위프트 프로그래밍 언어에 있습니다. 스위프트를 사용하여 코코아 개발을 시작하기 전에 먼저 읽어 보시기 바랍니다.

또한 가치가 독서 위를 반복하고 또한 당신에게 자동으로 스위프트 이니셜로 매핑하는 방법 ObjC 초기화 및 공장 방법에 대한 일반적인 규칙을 제공 코코아 및 목표 - C와 스위프트를 사용 Initialization의 섹션입니다 : 당신이 경우 Foo이라는 이니셜 라이저가있는 ObjC 클래스가 initWithBar: 및/또는 팩토리 클래스 메서드 fooWithBar:이면 Swift 이니셜 라이저 init(bar:)에 매핑되고 Foo(bar: someBarValue)이라는 구문으로 호출됩니다. 그래서

이 특정 초기화 양식 init!의 것을

utterance.voice = AVSpeechSynthesisVoice(language: "en-au") // g'day, mate 

주 - 기본 ObjC 코드 전무를 반환 할 수 있음을 의미하고, 스위프트는 Implicitly Unwrapped Optional의 초기화 호출의 결과를 감싸고있다. AVSpeechUtterance.voice은 선택 사항 (예 : 무효 값 포함)을 허용 할 수 있으므로 분명합니다. 그러나 이것이 변경되거나 명시 적으로 비 - 무 음성을 요구하는 API를 처리해야하는 경우 선택 사항을 확인해야합니다. 예 :

if let voice = AVSpeechSynthesisVoice(language: "en-au") { 
    // do something with voice 
} else { 
    // pick another one, maybe? 
} 
+0

"en-au"대신 "en"이 충분하다고 생각합니다. – Hope