我在Swift中定义了一个类:
class RecordedAudio: NSObject {
var title: String!
var filePathUrl: NSURL!
init(title: String, filePathUrl: NSURL) {
self.title = title
self.filePathUrl = filePathUrl
}
}
之后,我在控制器
中声明了这一个的全局变量var recordedAudio: RecordedAudio!
然后,在此函数中创建实例:
func audioRecorderDidFinishRecording(recorder: AVAudioRecorder!, successfully flag: Bool) {
if(flag){
// save recorded audio
recordedAudio = RecordedAudio(title: recorder.url.lastPathComponent, filePathUrl: recorder.url)
...
但是我在第一行中得到了错误消息,我创建了RecordedAudio的实例:
你可以帮我这个案子吗?我是Swift的初学者......可选类型'String?'的值没有打开;你的意思是用'!'还是'?'?
答案 0 :(得分:2)
lastPathComponent
返回一个可选的字符串:
但您的RecordedAudio
似乎需要String
而不是String?
。
有两种简单的方法可以解决它:
如果您确定lastPathComponent永远不会返回nil
,请添加!
recordedAudio = RecordedAudio(title: recorder.url.lastPathComponent!, filePathUrl: recorder.url)
或
如果lastPathComponent为nil
,请使用默认标题recordedAudio = RecordedAudio(title: recorder.url.lastPathComponent ?? "Default title", filePathUrl: recorder.url)