event.touchesForView(). AnyObject() не работает в Xcode 6.3

Раньше это работало отлично:

func doSomethingOnDrag(sender: UIButton, event: UIEvent) {
    let touch = event.touchesForView(sender).AnyObject() as UITouch
    let location = touch.locationInView(sender)
}

Но в Xcode 6.3 теперь я получаю сообщение об ошибке:

Невозможно вызвать AnyObject без аргументов

Как это исправить?


person Naftali Beder    schedule 10.04.2015    source источник


Ответы (1)


В версии 1.2 touchesForView теперь возвращает собственный Swift Set, а не NSSet, а Set не имеет метода anyObject().

У него есть метод first, который почти такой же. Также обратите внимание, что вы больше не сможете использовать as?, вам придется использовать его с помощью as? и обработать нулевую возможность, вот один из подходов:

func doSomethingOnDrag(sender: UIButton, event: UIEvent) {
    if let touch = event.touchesForView(sender)?.first as? UITouch,
           location = touch.locationInView(sender) {
            // use location
    }
}
person Airspeed Velocity    schedule 10.04.2015