0

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.

4

2 回答 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 回答