Подтвердить что ты не робот

'Set <NSObject>' не имеет члена с именем 'anyObject.' - Xcode 6.3

Я проверяю, выбран ли элемент.

func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
{
    // First, see if the game is in a paused state
    if !gamePaused
    {
        // Declare the touched symbol and its location on the screen
        let touch = touches.anyObject! as? UITouch
        let location = touch.locationInNode(symbolsLayer)

И это было ранее скомпилировано в Xcode 6.2, но с обновлением 6.3, строка "let touch = touchhes.anyObject! as? UITouch" выдает ошибку:

'Set' не имеет члена с именем 'anyObject'

Я прочитал много похожих вопросов, но я не могу обернуть голову "Чтобы использовать значение, вам нужно сначала его развернуть". Тем более, что ответы, похоже, сосредоточены на уведомлениях.

Большое вам спасибо. Вт

4b9b3361

Ответ 1

let touch =  touches.first as? UITouch

.first позволяет вам получить доступ к первому объекту UITouch.

Так как Xcode 6.3 использует обновленную версию Swift (1.2), вам нужно преобразовать старый код в Swift 1.2 (Edit → convert → To lastest Swift).

Swift 1.2 использует Set s (новый в Swift) вместо использования NSSet s (старый в Objective-C). Таким образом, функция touchbegan также изменяет свои параметры с NSSet на Set.

Для получения дополнительной информации укажите это

Ответ 2

Это проверит несколько касаний в символахLayer

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
{
    // First, see if the game is in a paused state
    if !gamePaused
    {
        // Declare the touched symbol and its location on the screen
        for touch: AnyObject in touches {
            let location = (touch as! UITouch).locationInNode(symbolsLayer)
        }
    }
}