Ошибка при попытке воспроизведения звука: 998: сбой при настройке звука, 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, и я распечатал код метода create, который был 0. Я также не могу найти какую-либо документацию по ошибке на веб-сайте Apple или где-либо еще в Интернете. Я делаю что-то неправильно?

Обновить:

По всей видимости, сохранение значения в словаре и его последующая загрузка являются причиной появления ошибки. Но дело в том, что мне нужен словарь удостоверений личности. Как я должен хранить идентификатор и почему его хранение приводит к ошибке?

1 ответ

Решение

Я смог решить мою проблему, выполнив это:

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

Кажется, что объект, над которым метод create выполняет свои действия, - это единственный объект, с которым вы можете вызвать play, поэтому вам нужно выполнить метод create специально для экземпляра словаря (или любого объекта, который вы пытаетесь сохранить в).

Другие вопросы по тегам