2016-09-08 15 views
0

私の2番目の質問はここにあり、それは春に関係しています。Swift/Spring - メンバー 'subscript'へのあいまいな参照

var soundID : SystemSoundID = Internal.cache[url] ?? 0 

Internal.cache[url] = soundID 

問題コード:

Ambiguous reference to member 'subscript' 

追加コード:

struct SoundPlayer { 

static var filename : String? 
static var enabled : Bool = true 

private struct Internal { 
    static var cache = [NSURL:SystemSoundID]() 
} 

static func playSound(soundFile: String) { 

    if !enabled { 
     return 
    } 

    if let url = Bundle.main.url(forResource: soundFile, withExtension: nil) { 

     var soundID : SystemSoundID = Internal.cache[url] ?? 0 

     if soundID == 0 { 
      AudioServicesCreateSystemSoundID(url as CFURL, &soundID) 
      Internal.cache[url] = soundID 
     } 

     AudioServicesPlaySystemSound(soundID) 

    } else { 
     print("Could not find sound file name `\(soundFile)`") 
    } 
} 

static func play(file: String) { 
    self.playSound(soundFile: file) 
} 
ここ

は、問題のコードを受信コードの行であります

}

+0

に 辞書の定義を変更する[春]タグは質問のためでありますJavaのhttp://projects.spring.io/spring-framework/フレームワークについてそれは本当にあなたが話していることですか? –

+0

前回の質問の情報を参考にして、自分で問題を解決できるかもしれません。 *ヒント:* 'url'変数はどのような型ですか? –

+0

いいえ、私の謝罪は、私はSwiftのためのSpring iOSアニメーションライブラリを意味しました。 –

答えて

0

キャッシュ・ディレクトリは、キータイプNSURLである

static var cache = [NSURL: SystemSoundID]() 

即ちとして定義されます。しかし、Bundle.main.url(...)は を返します。URLは「対応する」値の型です。次のいずれかを実行できURLからNSURLへ ブリッジ:

var soundID = Internal.cache[url as NSURL] ?? 0 

か(それはよりよい解決策として、私には見える)、

static var cache = [URL: SystemSoundID]() 
+0

それは十分に単純だった。答えは数行上のものでした。 時間を割いていただきありがとうございます。私は今、変化の背後にある理由を理解しています。 –

関連する問題