Swift中Type 'Any' cannot conform to 'Equatable'错误原因咨询
错误原因分析
核心问题:数组元素类型未明确且不满足Equatable协议要求
- 你声明的
var savedGoals = []在Swift中会被自动推断为[Any]类型的数组(因为没有指定具体元素类型)。 index(of:)方法的工作逻辑是通过元素相等性比较来查找索引,这要求数组的元素类型必须遵循Equatable协议——只有实现了该协议的类型,才能用==运算符判断两个实例是否相等。- 但
Any类型本身并没有遵循Equatable协议,编译器无法判断传入的id和数组中Any类型的元素是否相等,因此抛出Type 'Any' cannot conform to 'Equatable'错误。
附加影响:id的类型模糊
从items[indexPath.row]["id"]获取的id,其类型同样未明确(大概率也是Any),进一步导致编译器无法完成相等性校验,加重了这个错误。
内容的提问来源于stack exchange,提问作者Chris Hansen
相关产品推荐
相关产品推荐

