`NSDictionary` нельзя неявно преобразовать в `[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. 
 }

Он просит меня добавить [NSObject: AnyObject] после audioRecordingSetthings(), я не думаю, что это правильное решение. Потому что, когда я вызывал startRecordingAudio() в другом class, он вылетает с Unexpectedly found nil.


person Bright Future    schedule 18.06.2015    source источник
comment
kAudioFormatMPEG4AAC as NSNumber должно быть NSNumber(unsignedInt: kAudioFormatMPEG4AAC), потому что в принципе примитив нельзя напрямую преобразовать в объект.   -  person holex    schedule 18.06.2015


Ответы (2)


Вам просто нужно добавить 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
    ]
}
person Teo    schedule 18.06.2015

Вам нужно проверить инициализатор "AVAudioRecorder", который указывает:

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

Итак, вам нужно преобразовать настройку в [NSObject : AnyObject].

person Sohil R. Memon    schedule 18.06.2015