首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelIO/MDLAsset是否短视?

ModelIO/MDLAsset是否短视?
EN

Stack Overflow用户
提问于 2019-12-31 11:25:54
回答 1查看 41关注 0票数 0

使用Swift/MDLAsset加载".obj“的常用方法是使用如下代码

代码语言:javascript
复制
import ModelIO

var theURL: URL
var theAsset: MDLAsset

theURL = Bundle.main.url(forResource: "cube", withExtension: "obj")!
theAsset = MDLAsset(url: theURL)

这只适用于应用程序的主bundle中的文件(在macOS上的app/Contents/Resource中)。但我希望我的应用程序能够从我的文件系统中的任何位置读取文件。因此,我尝试了以下方法

代码语言:javascript
复制
// 1st attempt
    theURL = URL(string: "file:///Users/me/cube.obj")!
    theAsset = MDLAsset(url: theURL)

// 2nd attempt
    theURL = URL(fileURLWithPath: "/Users/me/cube.obj")
    theAsset = MDLAsset(url: theURL)

// 3rd attempt
    theURL = URL(string: "cube.obj", relativeTo: URL(string:"/Users/me/")!)!
    theAsset = MDLAsset(url: theURL)

它们都失败了(错误消息为"Could not open OBJ file")。仅当app/Contents/Resources下不存在"cube.obj"文件时,才会发生这种情况。

我天真的结论是,MDLAsset似乎是短视的--它只看一个地方:app/Contents/Resources.

我确信一定有解决方案(除了总是将我的obj文件复制到应用程序的资源中)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-01 13:03:46

这个问题并不是ModelIO或MDLAsset所特有的;这是沙盒应用程序的一个普遍问题。沙箱应用程序不能访问任意用户文件,它只能访问自己沙箱中的文件,除非用户交互授予它访问其他文件的权限。

例如,如果您的应用程序使用文件打开对话框(NSOpenPanel)要求用户选择模型对象文件,并且用户要这样做,那么您的应用程序将获得对该文件的访问权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59539225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档