首先,我有“ 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
}
此外,如果对象是可选的-再次工作正常。
您能帮我理解为什么数组不起作用吗?
答案 0 :(得分:3)
您在if let
语法上有误。您需要强制转换,而不是强制转换。而且由于您已经拥有此阵列,因此您不希望获得可选的口袋妖怪阵列
if let pokemonsList = objects as? [Pokemon] {
self.pokemons = pokemonsList
}