Swift MetalKit未知返回类型MTKMesh.newmesh

Swift MetalKit未知返回类型MTKMesh.newmesh,swift,assets,metal,metalkit,Swift,Assets,Metal,Metalkit,到目前为止,我一直在遵循一个教程(大约在《金属1》时代发布)来学习金属。我没有遇到任何错误,直到现在我才发现。我正在尝试执行此代码 var meshes: [AnyObject]? //code let device = MTLDevice() //device is fine let asset = MDLAsset() //asset works fine do{ meshes = try MTKMesh.newMeshes(asset: asset, device: device)

到目前为止,我一直在遵循一个教程(大约在《金属1》时代发布)来学习金属。我没有遇到任何错误,直到现在我才发现。我正在尝试执行此代码

var meshes: [AnyObject]?
//code
let device = MTLDevice() //device is fine
let asset = MDLAsset() //asset works fine
do{
    meshes = try MTKMesh.newMeshes(asset: asset, device: device)
} catch //...
我得到的错误是
无法将类型为“(modellomesh:[MDLMesh],metalkitmesh:[MTKMesh])的值赋给类型“[AnyObject]”?“


MTKMesh.newmesh的类型是什么,如何将其存储在变量中?我试着把它铸造成![AnyObject],但是xcode告诉我每次转换都会失败。

正如函数签名和编译器错误清楚显示的那样,返回类型是
(modelIOMeshes:[MDLMesh],metalkitemesh:[MTKMesh])
,因此您应该相应地声明
meshas

var meshes: (modelIOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])?

该类型是一个命名的元组,包含两个
Array
s,分别包含
MDLMesh
MTKMesh
实例。

该方法的返回类型是
([MDLMesh],[MTKMesh])
,元组由
MTLMesh
的数组和
MTKMesh
的数组组成。原因是,除了为您创建的
MTKMesh
对象之外,您可能还希望资产中包含
MDLMesh
对象的原始集合

因此,您可以这样声明
网格

var meshes: ([MDLMesh], [MTKMesh])
或者,如果您不关心原始的
MDLMesh
es,您可以“分解”元组,将您关心的部分转换为
[MTKMesh]
类型的变量:

var meshes: [MTKMesh]
(_, meshes) = try MTKMesh.newMeshes(asset: asset, device: device)

对不起,我想我没有很好地表达我的误解。我看到了返回类型,只是不确定返回类型是什么。对我来说,它看起来像一个函数的参数,你能解释一下它的类型吗?@GabeSpound该类型是一个命名元组,包含两个
Array
s,分别包含
MDLMesh
MTKMesh
实例。