2

我在 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 的初学者...

4

1 回答 1

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)
于 2015-08-18T15:11:55.047 回答