2016-08-16 6 views
0

2つのオブジェクトが衝突したときにサウンドを再生しようとしていますが、毎回このエラーが発生します。私はここでは、コードです私のiPhone 6を使用してテストしています:オーディオを再生しようとするとエラーが発生します:998:サウンドのセットアップに失敗しました。エラー:-50

guard soundEffects[sound] == nil else 
    { 
     print("Sound effect \(sound) already exists") 
     return false 
    } 

    guard let soundURL = NSBundle.mainBundle().URLForResource(sound, withExtension:format, subdirectory:path) else 
    { 
     print("Error creating URL for resource \(sound)") 
     return false 
    } 

    print(soundURL) 

    var systemID : SystemSoundID = id 

    soundEffects[sound] = systemID 
    print(AudioServicesCreateSystemSoundID(soundURL, &systemID)) 

    id += 1 

と私はそうのようにそれを再生しよう:

guard soundEffects[sound] != nil else 
    { 
     print("Sound effect '\(sound)' not found") 
     return false 
    } 

    print(soundEffects[sound]!) 

    AudioServicesPlaySystemSound(soundEffects[sound]!) 

ファイルの形式はwavファイルであると私はのコードをプリントアウト作成メソッドは0でした。私はまた、リンゴのWebサイトやWeb上の他の場所のエラーに関するドキュメントを見つけることができないようです。私は何か間違っているのですか?

更新:

はどうやら辞書に値を格納し、後でそれをロードするとエラーが表示されるように引き起こしているものです。しかし、私はIDの辞書を持っている必要があります。 IDを保存するにはどうしたらいいですか?それが原因でエラーが発生するのはなぜですか?

答えて

0

私はこれを行うことによって、私の問題を解決することができました:

let systemID : SystemSoundID = someUInt32 
soundEffects[sound] = systemID 
AudioServicesCreateSystemSoundID(soundURL, &soundEffects[sound]!) 
AudioServicesPlaySystemSound(soundEffects[sound]!) 

作成方法は上のアクションを実行するオブジェクトは、したがって、あなたが実行する必要がある、あなたがプレー呼び出すことができる唯一のオブジェクトであると思われますディクショナリのインスタンス(またはサウンドを格納しようとしているオブジェクト)のインスタンスに対するcreateメソッド。

関連する問題