Swift 使用捆绑包加载MDLAsset的对象文件
我正在尝试加载一个.obj文件,以便在macOS Swift应用程序中创建一个Swift 使用捆绑包加载MDLAsset的对象文件,swift,macos,nsbundle,modelio,Swift,Macos,Nsbundle,Modelio,我正在尝试加载一个.obj文件,以便在macOS Swift应用程序中创建一个MDLAsset对象。最初,我是这样创建资产的: let myAsset = URL(fileURLWithPath: "/Users/me/Development/MyProject/MyApp/Assets.xcassets/arrow.dataset/arrow.obj") arrowMdl = MDLAsset(url:arrow).object(at: 0) 显然,当应用程序处于生产状态时,这
MDLAsset
对象。最初,我是这样创建资产的:
let myAsset = URL(fileURLWithPath: "/Users/me/Development/MyProject/MyApp/Assets.xcassets/arrow.dataset/arrow.obj")
arrowMdl = MDLAsset(url:arrow).object(at: 0)
显然,当应用程序处于生产状态时,这将不起作用-因此,基于此,我尝试将.obj文件添加到捆绑包中,然后加载它,如下所示:
let path: String = Bundle.main.path(forResource: "Arrow", ofType: "bundle")!
do {
let arrowPath = try String(contentsOfFile: path)
}
catch let error as NSError {
print(error.description)
}
但是,我不断遇到以下错误:
Error Domain=NSCocoaErrorDomain Code=257 "The file “Arrow.bundle” couldn’t be opened because you don’t have permission to view it."
我确保为每个人设置读/写权限
我做错了什么?或者,是否有其他方法加载此资产?似乎
MDLAsset
需要一个URL来初始化它:尝试let path:String=Bundle.main.path(forResource:“arrow”,of type:“obj”)
请注意资源名称的大小写敏感度和类型。@Don在这种情况下,我是否应该直接将.obj文件复制到Xcode项目结构中?@namer您可以这样做。我没有注意到您正在使用资产目录。从资产目录中获取数据集的方法是通过类,但不能获取URL,只能获取数据。您可以编写一个小的扩展名来获取数据,将其保存在用户可访问的位置,然后提供新文件的URL。但是,现在您有两个文件副本,而您只需要一个,所以我建议您将.obj从资产目录中删除,是的。@narner您是如何解决这个问题的?