[Swift]nil 加载运行时下载的 scn 文件



我正在做一个项目,通过扫描二维码将模型加载到 ARKit 驱动的应用程序中。我有 qrCode 工作并将 .scn 文件下载到.tmp文件中。但是,当我试图通过SCNScene(url:(捕捉现场时,所有返回的内容都是零。

我想知道是否是因为我在下载完成之前过早---复制了文件,因为应用程序在我扫描二维码后立即冻结。

任何建议将不胜感激。 :D

2017-11-18 新增下载码

模板:http://www.jianshu.com/p/6ca4864b3600

func sessionSimpleDownload( scnurl: URL){
    let url = scnurl
    let request = URLRequest(url: url)
    let session = URLSession.shared
    var ls: String!
    let downloadTask = session.downloadTask(with: request,
    completionHandler: { (location:URL?, response:URLResponse?, error:Error?)
        -> Void in
        print("location:(String(describing: location))")
        let locationPath = location!.path
        let documents:String = NSHomeDirectory() + "/Documents/max.scn"
        ls = NSHomeDirectory() + "/Documents"
        let fileManager = FileManager.default
        if (fileManager.fileExists(atPath: documents)){
            try! fileManager.removeItem(atPath: documents)
        }
        try! fileManager.moveItem(atPath: locationPath, toPath: documents)
        print("new location:(documents)")
    })
    downloadTask.resume()
    self.Modelscene = SCNScene(named: "max.scn", inDirectory: ls)
}

您的下载代码在哪里? 在调用完成处理程序之前,不应尝试加载文件。 在任何情况下,您都可以使用 FileManager.default.attributesOfItem(atPath: ( 检查文件大小,看看它是否符合您的预期。

编辑:你的问题是你称呼自己。Modelscene = SCNScene(命名为: "max.scn", inDirectory: ls( 紧跟在 downloadTask.resume(( 之后。 这意味着您将在下载刚开始时打开场景,而不是在下载完成后打开场景。 您需要将场景分配放在完成处理程序中,以便在下载完成时发生。

相关内容

  • 没有找到相关文章

最新更新