Я использую indexesOfObjects(passingTest:) NSArray
, но после того, как я преобразовал свой код в Swift 3, я получаю сообщение об ошибке: «Неоднозначное использование indexOfObject(passingTest:)». Мой код ниже отлично работал со Swift 2.3.
let indexesOfBubbleConstraints = bubbleConstraints.indexesOfObjects(passingTest: { (constraint, idx, stop) in
if let view = constraint.firstItem as? UIView{
return view.tag == usernameTag
}
else{
return false
}
})
Для Swift 3 мне также пришлось преобразовать constraint
в AnyObject
, но это не решает реальной проблемы.
В итоге я использовал func indexesOfObjects(options: NSEnumerationOptions = [], passingTest: (Any, Int, UnsafeMutablePointer<ObjCBool>) -> Bool)
с пустым массивом для опций, как показано ниже. Это работает, но я до сих пор не понимаю, почему я получаю ошибку "Неоднозначно..." с моей исходной реализацией.
let indexesOfBubbleConstraints = bubbleConstraints.indexesOfObjects(options: [], passingTest: { (constraint, idx, stop) in
if let view = (constraint as AnyObject).firstItem as? UIView{
return view.tag == usernameTag
}
else{
return false
}
})