到目前为止,我一直在跟踪一个教程(大约发布在金属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 //...我得到的错误是Cannot assign value of type '(modellOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])' to type '[AnyObject]?'
什么是MTKMesh.newMeshes类型,以及如何将其存储在变量中?我试着将其转换为as! [AnyObject],但是xcode告诉我,每次转换都会失败。
发布于 2018-05-08 03:28:15
该方法的返回类型是([MDLMesh], [MTKMesh]),一个由MTLMeshes数组和MTKMeshes数组组成的元组。这样做的原因是,除了为您创建的MDLMesh对象之外,您可能还需要资产中包含的MTKMesh对象的原始集合。
因此,您可以这样声明meshes:
var meshes: ([MDLMesh], [MTKMesh])或者,如果您不关心原始的MDLMeshes,您可以“对”元组进行“重构”,将您所关心的部分得到一个类型为[MTKMesh]的变量。
var meshes: [MTKMesh]
(_, meshes) = try MTKMesh.newMeshes(asset: asset, device: device)发布于 2018-05-08 00:40:21
正如函数签名和编译器错误清楚显示的那样,返回类型为(modelIOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh]),因此您应该相应地声明meshas:
var meshes: (modelIOMeshes: [MDLMesh], metalKitMeshes: [MTKMesh])?该类型是一个命名元组,包含两个Array,分别包含MDLMesh和MTKMesh实例。
https://stackoverflow.com/questions/50224108
复制相似问题