Ce qui suit travaillait dans Swift 1.2:
var recordSettings = [
AVFormatIDKey: kAudioFormatMPEG4AAC,
AVEncoderAudioQualityKey : AVAudioQuality.Max.rawValue,
AVEncoderBitRateKey : 320000,
AVNumberOfChannelsKey: 2,
AVSampleRateKey : 44100.0]
Maintenant, cela donne l'erreur:
"Expression de type est ambiguë sans plus de contexte".
Pour respecter le format requis [String : AnyObject]
Requis par le paramètre recordSettings
; En plus de la réponse de @ Unheilig, vous devrez convertir vos ints
et floats
en 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
]
Vous pouvez donner plus d'informations au compilateur:
let recordSettings : [String : Any] =
[
AVFormatIDKey: kAudioFormatMPEG4AAC,
AVEncoderAudioQualityKey : AVAudioQuality.Max.rawValue,
AVEncoderBitRateKey : 320000,
AVNumberOfChannelsKey: 2,
AVSampleRateKey : 44100.0
]
J'ai également eu ce message d'erreur en essayant d'initialiser un tableau d'optionals avec nil:
var eggs : [Egg] = Array<Egg>(count: 10, repeatedValue: nil)
Le type d'expression 'Array <Egg>' est ambigu sans plus de contexte.
En changeant [Egg]
à [Egg?]
corrigé l'erreur.