(Swift)如何从元组数组[(Date,MyClass)]获取元组元素(Date,MyClass)的索引?

时间:2017-10-16 18:05:28

标签: swift indexing tuples equatable

我有一个类型为tuple(Date,MyOwnClass)的数组,并尝试从元组数组中找到与我的目标元组相等的特定元组的索引。 XCode给我错误说"二元运算符==不能......"当我尝试使用" .indexOf({$ 0 == targetTuple})"

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果元组的所有元素也符合它,则元组会自动符合Equatable协议,因此您只需要确保您的类实现了Equatable协议:

class MyClass {
  var name : String
  init(_ _name : String) {
    name = _name
  }
}

extension MyClass: Equatable {
  public static func ==(lhs: MyClass, rhs: MyClass) -> Bool {
    return lhs.name == rhs.name
  }
}

let ar : [(Int, MyClass)] = [
  (1, MyClass("A")),
  (2, MyClass("B")),
  (1, MyClass("A"))
]

if let ix = ar.index(where:{$0 == (1, MyClass("A"))}) {
  print(ix)
} else {
  print("not found")
}

// 0 is printed