尝试播放音频时出错:998:设置声音失败,err = -50

Error when trying to play audio: 998: Failure to setup sound, err = -50

我试图在两个物体碰撞时播放声音,但每次都出现此错误。我正在使用我的 iPhone 6 进行测试。这是代码:

    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。我似乎也无法在苹果网站或网络上的任何其他地方找到任何关于错误的文档。我做错了什么吗?

更新:

显然,将值存储在字典中并稍后加载它是导致出现错误的原因。但问题是我需要一本 ID 字典。我应该如何存储 ID,为什么存储它会导致错误?

我可以通过这样做来解决我的问题:

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

似乎 create 方法对其执行操作的对象是唯一可以调用 play 的对象,因此您需要专门针对字典的实例(或您要访问的任何对象)执行 create 方法尝试将声音存储在)。