簡體   English   中英

`NSDictionary`不能隱式轉換為`[NSObject:AnyObject]`

[英]`NSDictionary` is not implicitly convertible to `[NSObject : AnyObject]`

我有這個功能:

func audioRecordingSettings() -> NSDictionary {

        return [
            AVFormatIDKey : kAudioFormatMPEG4AAC as NSNumber,
            AVSampleRateKey : 16000.0 as NSNumber,
            AVNumberOfChannelsKey : 1 as NSNumber,
            AVEncoderAudioQualityKey : AVAudioQuality.Medium.rawValue as NSNumber
        ]
    }

然后我定義了另一個:

func startRecordingAudio() {

    var error: NSError?

    let audioRecordingURL = self.audioRecordingPath()

    audioRecorder = AVAudioRecorder(URL: audioRecordingURL, settings: audioRecordingSettings(), error: &error)
    //Here the error comes. 
 }

它要求我在audioRecordingSetthings()之后添加[NSObject: AnyObject] ,我不認為這是正確的解決方案。 因為當我在另一個class調用startRecordingAudio()時,它會在Unexpectedly found nil時崩潰。

你只需要添加audioRecordingSettings() as [NSObject : AnyObject]AVAudioRecorderDelegate

AVAudioRecorder(URL: audioRecordingURL, settings: audioRecordingSettings() as [NSObject : AnyObject], error: &error)

另外,我會將您的方法更改為:

func audioRecordingSettings() -> [NSObject : AnyObject] {

    return [
        AVFormatIDKey : kAudioFormatMPEG4AAC,
        AVSampleRateKey : 16000.0,
        AVNumberOfChannelsKey : 1,
        AVEncoderAudioQualityKey : AVAudioQuality.Medium.rawValue
    ]
}

您需要檢查"AVAudioRecorder"初始化程序,它指定:

init!(URL url: NSURL!, settings: [NSObject : AnyObject]!, error outError: NSErrorPointer)

因此,您需要將設置轉換為[NSObject : AnyObject]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM