Ios 尝试使用iCloud中的MDLAssets访问.stl文件,但.startAccessingSecurityScopedResource()允许为false

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

我正在尝试将一个模式加载到ARKit场景中,该场景在SceneKit之上工作,但我正在尝试使用UIDocumentPickerViewController从iCloud加载一个.stl文件,该控制器允许我将文件URL保存到核心数据中供以后使用。当我点击CoreData实体应该加载到场景中的某个项目时,CoreData实体会显示在一个表视图中供选择,但
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