gpt4 book ai didi

swift - ModelIO/MDLAsset 是短视吗?

转载 作者:行者123 更新时间:2023-11-30 10:29:01 25 4
gpt4 key购买 nike

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

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 中)。但我希望我的应用程序能够从文件系统上的任何位置读取文件。所以我尝试了以下方法

// 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)

它们都失败了(错误消息“无法打开 OBJ 文件”)。仅当“cube.obj”文件不在app/Contents/Resources下时才会发生这种情况。

我天真的结论是,MDLAsset 似乎是短视的——它只关注一个地方:app/Contents/Resources。

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

最佳答案

该问题并非特定于 ModelIO 或 MDLAsset;这是沙盒应用程序的普遍问题。沙盒应用程序无法访问任意用户文件,它只能访问自己沙盒中的文件,除非用户交互授予其访问其他文件的权限。

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

关于swift - ModelIO/MDLAsset 是短视吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59539225/

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