Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用捆绑包加载MDLAsset的对象文件_Swift_Macos_Nsbundle_Modelio - Fatal编程技术网

Swift 使用捆绑包加载MDLAsset的对象文件

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) 显然,当应用程序处于生产状态时,这

我正在尝试加载一个.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)
显然,当应用程序处于生产状态时,这将不起作用-因此,基于此,我尝试将.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您是如何解决这个问题的?