Невозможно найти ресурс, расположенный в assets.xcassets

Эй, ребята, я все еще новичок в Stackru, поэтому, пожалуйста, потерпите меня, если я делаю что-то не так, я стараюсь изо всех сил.

Я пытаюсь сделать простое приложение с новой Apple WatchOS6 и swiftUI в новой бета-версии Xcode11, которая воспроизводит звуковой файл из assets.xcassets.

Я думаю, что я делаю что-то не так, когда пытаюсь найти файл, который у меня есть в активах, вот код ошибки:

Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения: file /Users/phillipeismark/Desktop/WatchOS6/WatchOS6Demo/WatchOS6Demo Расширение WatchKit / Модель /AudioPlayer.swift, строка 21 2019-08-28 15:06:58.396058+0200 WatchOS6Demo WatchKit Расширение [12691:794523] Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения: file /Users/phillipeismark/Desktop/WatchOS6/WatchOS6Demo/WatchOS6Demo Расширение WatchKit /Model/AudioPlayer.swift, строка 21

Мой код построен следующим образом: у меня есть ContentView, список, который просто отображает мою кнопку, которая вызывает мой аудиоплеер при нажатии. Код для ContentView не включен.

Структура AudioPlayerButton выглядит следующим образом и в основном вызывает play() для проигрывателя:

struct AudioPlayerButton: View {
@State var player = AudioPlayer()

var body: some View {
    Button(action: player.play) {
        Image("newPlayButton")
        }
    }
}

Это мой класс AudioPlayer, где я получаю сообщение об ошибке:

import Foundation
import AVFoundation
import Combine
import SwiftUI

class AudioPlayer {
var didChange = PassthroughSubject <Void, Never>()
var isPlaying: Bool = false
var AudioPlayer: AVAudioPlayer?
let url = URL.init(fileURLWithPath: Bundle.main.path(forResource: "Glad", ofType: ".wav")!)
//let url = URL.init(fileURLWithPath: Bundle.main.path(forResource: "Glad", ofType: ".wav", inDirectory:"/Users/phillipeismark/Desktop/WatchOS6/WatchOS6Demo/WatchOS6Demo WatchKit Extension/Assets.xcassets/" )!)


func play() {
    do {
        AudioPlayer = try AVAudioPlayer(contentsOf: url)
        AudioPlayer?.play()
    } catch {
        print(error)
        }
    }
}

Я заметил, что существует несколько папок asset.xcassets, одна внутри WatchOSit App Watch Watch и другая внутри WatchOSit Extension WatchOS6, чтобы убедиться, что я не поместил его в неправильное место, я просто добавил файл в обе папки.

Вот что я попробовал:

1: я заметил, что существует несколько папок asset.xcassets, и я попытался добавить файл в обе из них.

2: я попытался установить параметры ForResource и ofType как nil, чтобы попытаться "поразить больше целей", как сказано в Документации: "Если вы укажете nil, метод вернет первый найденный файл ресурсов, который соответствует остальным критериям ".

3: я попытался дать значение 3-му параметру в пути (forResource:ofType:inDirectory:), как вы можете видеть в моем классе AudioPlayer с закомментированной строкой.

4: я взял старый звук от старого проекта, который я знал, работал. Я также проверил, мог ли этот проект работать и мог ли он.

Все, что может направить меня в правильном направлении, очень ценится! Благодарю.

Я загрузил проект на GitHub, если кто-то хотел посмотреть на него.

Обновление: ЭТО РАБОТАЕТ Я запускал обычный симулятор iPhone в другом проекте. Я ничего не делал, но сделал новый проект и запустил симулятор. Затем я открыл браузер, зашел на YouTube и проиграл видео. Это все еще не работало, поэтому я позволил видео воспроизводиться в симуляторе и продолжал гуглить вокруг. Затем, когда видео закончилось, и YouTube пришлось воспроизвести дополнение, звук волшебным образом начал работать - было добавление еще до того, как видео началось, но оно не заставляло его работать, это было в конце видео. Я онемел. Я думаю, что симулятор iPhone сделал конфигурацию, но я понятия не имею. Любые теории о том, как эта работа или может работать очень ценится

0 ответов

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