我想让AnyClass (又称AnyObject.Type)符合Equatable,这样当我有一个带有AnyClass元素(Array<AnyClass>)的数组时,我可以调用remove(Element:),但这需要Element符合Equatable。
发布于 2017-05-17 00:34:29
我真的不认为你试图获得的东西是可能的,或者你是否应该尝试用这种方式去做。
类通常代表现实世界的对象,无论这是一辆汽车,一个视图或完全不同的东西。所以很难说我创建的任何自定义类和我创建的其他自定义类是一样的。
斯威夫特只是不知道如何比较它们,是什么让它们相同。
要在这里实现您想要的功能,最简单的方法是定义一个自定义协议/接口,该协议/接口表示您将在此应用程序中使用的类的泛型版本,然后确保每个协议/接口都符合该协议/接口,并且是可等同的。然后,您应该能够执行以下操作:
var objs = Array<MyAppClassesProtocol>() 还可以使用remove(element:)
发布于 2017-09-28 06:52:42
从Swift 3开始,你可以使用AnyHashable作为AnyObject的替代品。它表示符合Equatable协议的任何值。
而不是
var array:[AnyObject] = []只需写
var array:[AnyHashable] = []https://stackoverflow.com/questions/44006522
复制相似问题