Swift MetalKit 未知 return 类型 MTKMesh.newMeshes
Swift MetalKit unknknown return type MTKMesh.newMeshes
到目前为止,我一直在按照教程(大约在 Metal 1 发布时发布)来学习 Metal。到目前为止,我还没有遇到任何我无法弄清楚的错误。我正在尝试执行此代码
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 //...
我得到的错误是 Cannot assign value of type '(modellOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])' to type '[AnyObject]?'
MTKMesh.newMeshes
的类型是什么?如何将其存储在变量中?我试着投射它 as! [AnyObject]
,但是 xcode 告诉我每次投射都会失败。
正如函数签名和编译器错误清楚显示的那样,return 类型是 (modelIOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])
,因此您应该相应地声明 meshas
:
var meshes: (modelIOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])?
该类型是一个包含两个 Array
的命名元组,分别包含 MDLMesh
和 MTKMesh
个实例。
那个方法的return类型是([MDLMesh], [MTKMesh])
,一个由MTLMesh
es数组和MTKMesh
es数组组成的元组。这样做的原因是,除了为您创建的 MTKMesh
个对象之外,您可能还需要资产中包含 MDLMesh
个对象的原始集合。
因此,您可以这样声明 meshes
:
var meshes: ([MDLMesh], [MTKMesh])
或者,如果您不关心原始的 MDLMesh
es,您可以 "destructure" 元组将您关心的部分放入 [MTKMesh]
类型的变量中:
var meshes: [MTKMesh]
(_, meshes) = try MTKMesh.newMeshes(asset: asset, device: device)
到目前为止,我一直在按照教程(大约在 Metal 1 发布时发布)来学习 Metal。到目前为止,我还没有遇到任何我无法弄清楚的错误。我正在尝试执行此代码
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 //...
我得到的错误是 Cannot assign value of type '(modellOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])' to type '[AnyObject]?'
MTKMesh.newMeshes
的类型是什么?如何将其存储在变量中?我试着投射它 as! [AnyObject]
,但是 xcode 告诉我每次投射都会失败。
正如函数签名和编译器错误清楚显示的那样,return 类型是 (modelIOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])
,因此您应该相应地声明 meshas
:
var meshes: (modelIOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])?
该类型是一个包含两个 Array
的命名元组,分别包含 MDLMesh
和 MTKMesh
个实例。
那个方法的return类型是([MDLMesh], [MTKMesh])
,一个由MTLMesh
es数组和MTKMesh
es数组组成的元组。这样做的原因是,除了为您创建的 MTKMesh
个对象之外,您可能还需要资产中包含 MDLMesh
个对象的原始集合。
因此,您可以这样声明 meshes
:
var meshes: ([MDLMesh], [MTKMesh])
或者,如果您不关心原始的 MDLMesh
es,您可以 "destructure" 元组将您关心的部分放入 [MTKMesh]
类型的变量中:
var meshes: [MTKMesh]
(_, meshes) = try MTKMesh.newMeshes(asset: asset, device: device)