Swift报错:无法将UILabel!类型转换为String类型求解决
解决Swift中UILabel无法转换为String的错误
嘿,这个问题很常见,我帮你捋清楚:
你在初始化AVSpeechUtterance的时候,直接传入了nameLbl这个UILabel实例,但AVSpeechUtterance(string:)需要的是String类型的参数,而不是UILabel对象本身——你要传的是标签显示的文本内容,也就是UILabel的text属性。
修正后的核心代码
把出错的那行代码改成这样:
let utterance = AVSpeechUtterance(string: nameLbl.text ?? "")
为什么要加?? ""?
因为UILabel的text属性是可选类型(String?),如果标签没有设置文本,text会是nil。用空字符串兜底可以避免运行时崩溃,保证AVSpeechUtterance总能拿到有效的String参数。
完整修正后的按钮方法
另外我还发现你漏了让语音合成器发声的关键调用,补上之后的完整方法是这样的:
@IBAction func characterBtnDidTouch(_ sender: Any) { generateRandomCharacter() let synthesizer = AVSpeechSynthesizer() let utterance = AVSpeechUtterance(string: nameLbl.text ?? "") utterance.rate = 0.4 utterance.voice = AVSpeechSynthesisVoice(language: "en-US") synthesizer.speak(utterance) // 调用这个方法才能让语音播放出来 }
内容的提问来源于stack exchange,提问作者Tbizz
相关产品推荐
相关产品推荐

