【发布时间】:2014-07-01 14:20:04
【问题描述】:
每当我创建一个协议类型数组时,如何获取该数组中对象的索引?我尝试了以下方法:
protocol aProtocol {
func doSomething()
}
class aClass: aProtocol, Equatable {
var aProperty = "test"
func doSomething() {
}
}
func == (lhs: aClass, rhs: aClass) -> Bool {
return lhs.aProperty == rhs.aProperty
}
var testArray = aProtocol[]()
let testObject = aClass()
testArray += testObject
find(testArray, testObject)
在这种情况下,我得到一个“无法转换表达式的类型 '$T4?'键入“aClass””错误。
查看 find() 的方法签名,我们发现该元素应该实现 Equatable(这就是我在上面重载 == 运算符的原因):
func find<C : Collection where C.GeneratorType.Element : Equatable>(domain: C, value: C.GeneratorType.Element) -> C.IndexType?
有没有人知道我做错了什么,或者这种情况是否可能发生?谢谢。
【问题讨论】: