Ios 尝试使用iCloud中的MDLAssets访问.stl文件,但.startAccessingSecurityScopedResource()允许为false
我正在尝试将一个模式加载到ARKit场景中,该场景在SceneKit之上工作,但我正在尝试使用UIDocumentPickerViewController从iCloud加载一个.stl文件,该控制器允许我将文件URL保存到核心数据中供以后使用。当我点击CoreData实体应该加载到场景中的某个项目时,CoreData实体会显示在一个表视图中供选择,但Ios 尝试使用iCloud中的MDLAssets访问.stl文件,但.startAccessingSecurityScopedResource()允许为false,ios,icloud,scenekit,file-access,Ios,Icloud,Scenekit,File Access,我正在尝试将一个模式加载到ARKit场景中,该场景在SceneKit之上工作,但我正在尝试使用UIDocumentPickerViewController从iCloud加载一个.stl文件,该控制器允许我将文件URL保存到核心数据中供以后使用。当我点击CoreData实体应该加载到场景中的某个项目时,CoreData实体会显示在一个表视图中供选择,但url。startAccessingSecurityScopedResource()似乎总是错误的,或者没有包含.startAccessingSec
url。startAccessingSecurityScopedResource()
似乎总是错误的,或者没有包含.startAccessingSecurityScopedResource()的if语句。
它会在资产对象(at:0)
以下是func代码:
func loadModalToScene(url: URL) {
print("Can Open: ", MDLAsset.canImportFileExtension(url.absoluteString))
if (url.startAccessingSecurityScopedResource()) {
//Loads 3D Objects into Memory via Model / IO
let asset = MDLAsset(url: url)
print("MDL Asset: ", asset)
// Turns the MDLAsset into a MDLObject
let object = asset.object(at: 0)
print("Object Asset: ", object)
// Turns the MDLObject into a SCNNode
let node = SCNNode(mdlObject: object)
print("SCN Node Asset: ", node)
url.stopAccessingSecurityScopedResource()
}
}
该功能尚未完成,但我正在尝试首先将其加载到内存中。如果在事件开始使用AR部件之前,您被文件I/O卡住了,那么这不是一个真正的ARKit问题。您是否检查过是否可以读取包含
数据的文件?如果不是,那么模型I/O和SceneKit就不是你的问题-文件访问是。我认为它的文件访问是因为我直接将文件URL加载到模型I/O