Swift 2.0: Тип выражения неоднозначен без дополнительного контекста?
Следующие данные используются для работы в Swift 1.2:
var recordSettings = [
AVFormatIDKey: kAudioFormatMPEG4AAC,
AVEncoderAudioQualityKey : AVAudioQuality.Max.rawValue,
AVEncoderBitRateKey : 320000,
AVNumberOfChannelsKey: 2,
AVSampleRateKey : 44100.0]
Теперь он дает ошибку:
"Выражение типа неоднозначно без дополнительного контекста".
Ответы
Ответ 1
Вы можете предоставить компилятору дополнительную информацию:
let recordSettings : [String : Any] =
[
AVFormatIDKey: kAudioFormatMPEG4AAC,
AVEncoderAudioQualityKey : AVAudioQuality.Max.rawValue,
AVEncoderBitRateKey : 320000,
AVNumberOfChannelsKey: 2,
AVSampleRateKey : 44100.0
]
Ответ 2
Соответствовать требуемому формату [String : AnyObject]
, требуемому параметром recordSettings
; В дополнение к ответу @Unheilig вам нужно будет преобразовать ваши ints
и floats
в NSNumber
:
let recordSettings : [String : AnyObject] =
[
AVFormatIDKey: NSNumber(unsignedInt: kAudioFormatMPEG4AAC),
AVEncoderAudioQualityKey : AVAudioQuality.Max.rawValue as NSNumber,
AVEncoderBitRateKey : 320000 as NSNumber,
AVNumberOfChannelsKey: 2 as NSNumber,
AVSampleRateKey : 44100.0 as NSNumber
]
Ответ 3
Я также получил это сообщение об ошибке, пытающееся инициализировать массив опций с nil:
var eggs : [Egg] = Array<Egg>(count: 10, repeatedValue: nil)
Тип выражения 'Array <Egg> ' неоднозначно без дополнительного контекста.
Изменение [Egg]
до [Egg?]
исправило ошибку.