2014-09-14 1 views
1

У меня есть класс, SlideAnimationController, то есть подкласс NSObject должен соответствовать протоколу UIViewControllerAnimatedTransitioning.UIViewControllerAnimatedTransitioning в Xcode 6 GM

В Xcode 6 GM я получаю сообщение об ошибке, что мой класс не соответствует протоколу.

Я внедрил transitionDuration и animateTransition. Это только два необходимых метода из трех, к которым призывает протокол.

Добавление последнего метода, animationEnded, не имеет значения.

Что мне не хватает? Этот же код был функционален не так давно.

Редактировать

Вот реализация класса:

import UIKit 

class SlideAnimationController: NSObject, UIViewControllerAnimatedTransitioning { 

    var fromIndex: Int = 0 
    var toIndex: Int = 0 

    func transitionDuration(transitionContext: UIViewControllerContextTransitioning!) -> NSTimeInterval { 
     return 1 
    } 

    func animateTransition(transitionContext: UIViewControllerContextTransitioning!) { 
     //Stuff 
    } 

} 
+0

Это звучит как ошибка, но вы можете разместить код, чтобы мы могли вменяемости проверить? Возможно, там, где вы заявляете о соответствии протокола и подписи метода в своей реализации. – Acey

+0

@Acey Конечно, позвольте мне добавить это к вопросу. – erdekhayser

+0

@ Acey Я вижу, что не так. The! 'S остались от более ранней беты. В этом случае, потому что я не переопределяю, это не указывает на проблему. Я подумал, что если бы возникла такая проблема, у меня было бы такое исправление, как переопределение. – erdekhayser

ответ

1

Эта ошибка связана с изменениями в версии Свифта в Objective-C API. Во многих случаях, когда Swift неявно разворачивал опционы в качестве аргументов, аргументы были изменены как на обычные, так и на необязательные переменные.

Как правило, при переопределении метода Xcode предлагает исправление, чтобы исправить это использование! где они больше не нужны.

Однако, поскольку эти методы, которые я объявлял, не обязательно являются частью протокола, Xcode распознает эти методы, просто не понимает, что это те, которые я хочу для протокола.

Для того, чтобы исправить это, мне нужно удалить! С обоих параметров метода (например, UIViewControllerContextTransitioning! становится UIViewControllerContextTransitioning)