不能将“find()”方法与UIView类型的数组一起使用

时间:2014-08-19 18:48:50

标签: arrays swift

当我尝试使用此方法时,编译器会显示下一个错误:“类型'UIView'不符合协议'IntegerLiteralConvertible'”

if find(_views, 1) {

}

1 个答案:

答案 0 :(得分:1)

该方法签名是:

find(domain: C, value: C.Generator.Element) -> C.Index?

其中C是一个类型化数组,C.Generator.Element是该数组中元素的类型,C.Index?是一个可选项,它将包含找到该元素的索引,如果发现了。

所以你得到的错误是因为它查看了数组UIView中的实例,并尝试将它们与1 IntegerLiteral进行比较。 UIView不是IntegerLiteralConvertible,因为将视图转换为整数是没有意义的。

所以find将返回索引,其中某些实例可以在这些实例的数组中找到。

var strings: [String] = ["A", "B", "C"]
find(strings, "C")! // 2

但你似乎不想索引。 if find(views, 1)似乎向我表明您要检查数组中是否存在索引1。如果这真的是你想要的,你可以通过检查计数来做到这一点。

if _views.count > 1 {
  println("index 1 exists in this array")
}