Получить ссылку на каталог SceneKit Swift

Я, должно быть, упускаю что-то простое - я пытаюсь перебрать файлы в папке.scnassets, но не могу получить ссылку на папку / каталог.

Вот организатор:

введите описание изображения здесь

Models.scnassets содержит один файл. Я попробовал это:

let fileManager = FileManager.default
let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
let docsURL = urls.first
let assetFolderPath = docsURL?.appendingPathComponent("Models.scnassets").path

И я попробовал этот и несколько других вариантов:

let modelPathString = "ARAds/Models.scnassets"

Затем я попытался сосчитать файлы по обоим указанным выше путям:

    do {
        let modelPathDirectoryFiles = try fileManager.contentsOfDirectory(atPath: assetFolderPath!)
        //or modelPathString
        print(modelPathDirectoryFiles.count)
    } catch {
        print("error getting list of files")
    }

Я получаю сообщение об ошибке во всех случаях. Я предполагаю, что должен быть какой-то особый способ получить ссылку на каталог SceneKit, но я не смог найти это ни в документации Apple, ни в SO. Любое руководство будет оценено. iOS 11.4 Xcode 10.0

2 ответа

Решение

Вы указали мне в лучшем направлении, но я уже могу получить SCN и сделать узел, если я знаю имя. Что я действительно хочу сделать, так это заполнить табличное представление доступными опциями, поэтому мне нужно найти текущий список файлов сцен.

Я думаю, что это будет работать:

let subdir = Bundle.main.resourceURL!.appendingPathComponent("Models.scnassets").path

do {
    let modelPathDirectoryFiles = try fileManager.contentsOfDirectory(atPath: subdir)
    print(modelPathDirectoryFiles.count) //this works
    //then do my thing with the array
} catch {
    print("error getting list of files")
}

Кажется, это работает, независимо от того, перемещаю я папку или нет.

Глядя на ваш код, первое, что я вижу, это то, что вы ссылаетесь на Documents Directory который на самом деле не где ваша папка.

The Documents Directory это папка на вашем фактическом устройстве, где вы можете сохранить пользовательские данные или другие файлы, к которым можно получить доступ позднее (например, через iTunes Sharing).

Если вы переместите Models.scnassets папка под желтым ArAds Папка, в которой вы сможете получить доступ к своему контенту, вот так:

let myModelToLocate = SCNScene(named: "Models.scnassets/Phone_01.scn")

Надеюсь, поможет...

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