I would like to make AnyClass
(AKA AnyObject.Type
) conform to Equatable
so that when I have an array with AnyClass
elements (Array<AnyClass>
), I can call remove(Element:)
, but this requires Element
to conform to Equatable
.
问问题
476 次
2 回答
2
AnyHashable
从Swift 3 开始,您可以使用AnyObject
. 它代表任何符合Equatable
协议的值。
代替
var array:[AnyObject] = []
写吧
var array:[AnyHashable] = []
于 2017-09-27T22:52:42.210 回答
1
我实际上并不认为您尝试实现的目标是可能的,或者您是否应该尝试以这种方式做到这一点。
类通常代表现实世界的对象,无论是汽车、视图还是完全不同的东西。所以很难说我创建的任何自定义 I 类与我创建的其他自定义类相同。
斯威夫特只是不知道如何比较它们,是什么让它们相同。
在这里实现您想要的最简单的方法是定义一个自定义协议/接口,该协议/接口代表您将在此应用程序中使用的类的通用版本,然后确保每个都符合该标准并且也是平等的。然后你应该能够做类似的事情:
var objs = Array<MyAppClassesProtocol>()
并且还使用remove(element:)
于 2017-05-16T16:34:29.337 回答