如何解决表达式的类型是不明确的,没有更多的swift 2中的录音机的上下文

Sil*_* St 8 ios swift ios9 swift2

我已经升级到Swift 2.0,当我尝试录制声音时我完全听不懂:

如果没有更多的上下文,表达的类型是不明确的

var recordSettings

我该怎么做才能解决这个错误,更重要的是,为什么?

 var recordSettings = [
        AVFormatIDKey: kAudioFormatAppleLossless,
        AVEncoderAudioQualityKey : AVAudioQuality.Max.rawValue,
        AVEncoderBitRateKey : 320000,
        AVNumberOfChannelsKey: 2,
        AVSampleRateKey : 44100.0
    ]

    var dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    var docsDir: AnyObject = dirPaths[0]
    var soundFilePath = docsDir.stringByAppendingPathComponent("tempRecordzz")
    var soundFileURL:NSURL = NSURL(fileURLWithPath: soundFilePath)



    var error: NSError?
    do {
        recorder = try AVAudioRecorder(URL: soundFileURL, settings: recordSettings)
    } catch var error1 as NSError {
        error = error1
        recorder = nil
    }
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 15

的类型kAudioFormatAppleLossless从改变Int(夫特1.2/6.4的Xcode)至Int32(SWIFT 2/Xcode的7)和UInt32在夫特7.0.1.的固定大小的整数类型,如Int32UInt32自动桥接到NSNumber在一个用于插入对象NSDictionary.

显式转换有助于解决问题:

let recordSettings = [
    AVFormatIDKey: Int(kAudioFormatAppleLossless), // <-- HERE
    AVEncoderAudioQualityKey : AVAudioQuality.Max.rawValue,
    AVEncoderBitRateKey : 320000,
    AVNumberOfChannelsKey: 2,
    AVSampleRateKey : 44100.0
]
Run Code Online (Sandbox Code Playgroud)