2015-09-19 11 views
42

Poniżej wykorzystywane do pracy w Swift 1.2:Swift 2.0: Typ wyrażenia jest niejednoznaczny bez kontekstu?

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

Teraz daje błąd:

"Type expression is ambiguous without more context".

Odpowiedz

56

możesz dać kompilator Więcej informacji:

let recordSettings : [String : Any] = 
[ 
    AVFormatIDKey: kAudioFormatMPEG4AAC, 
    AVEncoderAudioQualityKey : AVAudioQuality.Max.rawValue, 
    AVEncoderBitRateKey : 320000, 
    AVNumberOfChannelsKey: 2, 
    AVSampleRateKey : 44100.0 
] 
+1

Dziękuję za to. Nie wiedziałem, że był dostępny. Próbowałem AnyObject i to nie działało. Niestety odbiorca rekordów wymaga [String: AnyObject] – lernerbot

+1

@lernerbot, zobacz moją odpowiedź poniżej. – Stephan

+1

Masz rację. Moje pierwotne pytanie było mgliste. – lernerbot

35

do wykonania do wymagany format [String : AnyObject] wymagany przez parametr recordSettings; Oprócz @ odpowiedź Unheilig jest, trzeba konwertować ints i floats do 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

to powinna być zaakceptowana odpowiedź – DCDC

+2

Zgadzam się z tym wyjątkiem, że nie zadałem poprawnie pytania. @Stephan odpowiedział na pytanie, które chciałem zapytać. – lernerbot

3

ja też mam ten komunikat o błędzie próbuje zainicjować tablicę optionals z nil:

var eggs : [Egg] = Array<Egg>(count: 10, repeatedValue: nil) 

Expression Type 'Array<Egg>' is ambiguous without more context.

Zmiana [Egg] na [Egg?] naprawiła błąd.

Powiązane problemy