无法从...转换为其他可选类型

时间:2019-03-26 09:48:29

标签: ios swift

首先,我有“ ApiModel”协议,该协议只是空的。然后,我得到了实现ApiModel协议的模型结构“ Pokemon”。现在,我正在尝试将ApiModel([ApiModel])数组转换为Pokemon [Pokemon]数组,因此我正在使用以下函数:

if let pokemonsList = objects as! [Pokemon]? {
                        self.pokemons = pokemonsList
                    }

objects-是非可选的let变量,其中包含[ApiModel]。

但是我遇到以下错误: 无法从“ [ApiModel]”转换为更可选的类型“ [Pokemon]?”

当我尝试在单个模型上执行此操作时,效果很好:

if let poke = objects.first as! Pokemon? {
                        self.pokemon = poke
                    }

此外,如果对象是可选的-再次工作正常。

您能帮我理解为什么数组不起作用吗?

1 个答案:

答案 0 :(得分:3)

您在if let语法上有误。您需要强制转换,而不是强制转换。而且由于您已经拥有此阵列,因此您不希望获得可选的口袋妖怪阵列

if let pokemonsList = objects as? [Pokemon] {
    self.pokemons = pokemonsList
}