Использование пакета для загрузки объектного файла для MDLAsset

Я пытаюсь загрузить файл .obj для создания объекта MDLAsset в приложении MacOS Swift. Первоначально я создавал актив следующим образом:

   let myAsset = URL(fileURLWithPath: "/Users/me/Development/MyProject/MyApp/Assets.xcassets/arrow.dataset/arrow.obj")
    arrowMdl = MDLAsset(url:arrow).object(at: 0)

Очевидно, что это не сработает, когда приложение находится в производстве, поэтому, основываясь на этом ответе SO, я попытался добавить файл . obj в пакет, а затем загрузите его, например:

    let path: String = Bundle.main.path(forResource: "Arrow", ofType: "bundle")!
    do {
        let arrowPath = try String(contentsOfFile: path)
    }
    catch let error as NSError {
        print(error.description)
    }

Однако я продолжаю получать следующую ошибку:

Error Domain=NSCocoaErrorDomain Code=257 "The file “Arrow.bundle” couldn’t be opened because you don’t have permission to view it." 

Я позаботился о том, чтобы установить права на чтение/запись для всех.

Что я делаю не так? Или есть другой способ загрузить этот актив? Похоже, что для инициализации MDLAsset требуется URL-адрес: https://developer.apple.com/documentation/modelio/mdlasset


person narner    schedule 04.12.2017    source источник
comment
Попробуйте let path: String = Bundle.main.path(forResource: "arrow", ofType: "obj") Обратите внимание на чувствительность к регистру и тип имени ресурса.   -  person Don    schedule 04.12.2017
comment
@Don В таком случае, должен ли я просто скопировать свой файл .obj непосредственно в структуру проекта Xcode?   -  person narner    schedule 04.12.2017
comment
@namer Ты можешь это сделать. Я не заметил, что вы использовали каталог активов. Получить наборы данных из каталога активов можно с помощью класса NSDataAsset, но вы можете не получить URL, только данные. Вы можете написать небольшое расширение, которое берет эти данные, сохраняет их в доступном для пользователя месте, а затем предоставляет URL-адрес нового файла. Однако теперь у вас есть 2 копии файла, когда вам нужна только одна, поэтому я бы рекомендовал убрать .obj из каталога активов, да.   -  person Don    schedule 04.12.2017
comment
@narner как ты это решил?   -  person Jubei    schedule 13.06.2019