web-dev-qa-db-ja.com

Swift 2.0:式のタイプは、コンテキストなしではあいまいです?

以下はSwift 1.2で機能していました。

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

今、それはエラーを与えます:

「型表現は文脈がなければあいまいです」。

42
lernerbot

recordSettingsパラメーターで必要な[String : AnyObject]形式に準拠するには; @Unheiligの答えに加えて、intsfloatsNSNumberに変換する必要があります。

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
]
35
Stephan

コンパイラに詳細情報を提供できます。

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

オプションの配列をnilで初期化しようとすると、このエラーメッセージも表示されます。

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

式タイプ 'Array <Egg>'は、コンテキストがなくあいまいです。

[Egg][Egg?]に変更すると、エラーが修正されました。

4
rghome