Получить ссылку на каталог 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")
Надеюсь, поможет...