gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:00:10 26 4
gpt4 key购买 nike

我正在开发一个项目,通过扫描 qrCode 将模型加载到 ARKit 支持的应用程序中。我已将 qrCode 正常工作并将 .scn 文件下载到 .tmp 文件中。然而,当我尝试通过 SCNScene(url:) 捕捉场景时,所有返回的都是 nil。

我想知道是否是因为我太早复制了文件 - 在下载完成之前,因为应用程序在我扫描 qrCode 后立即卡住。

如有任何建议,我们将不胜感激。 :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: ) 检查文件大小,看看是否符合您的预期。

编辑:您的问题是您在 downloadTask.resume() 之后立即调用 self.Modelscene = SCNScene(named: "max.scn", inDirectory: ls) 。这意味着您在下载刚刚开始时打开场景,而不是在下载完成后打开场景。您需要将场景分配放入完成处理程序中,以便在下载完成时发生。

关于ios - [Swift]加载运行时下载的 scn 文件时为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47344422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com