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.的固定大小的整数类型,如Int32
与UInt32
被不自动桥接到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)