2016-12-28 4 views
-1

Я пытаюсь перенести некоторый код Objective-C на мой код Swift, но есть некоторые ошибки протокола в Swift. В моей Objective-C все работает отлично.Can; t определить и использовать протокол

У меня есть один класс сказать MGCDayPlannerEKViewController,

public class MGCDayPlannerEKViewController : MGCDayPlannerViewController, UIPopoverPresentationControllerDelegate { 

    public var calendar: NSCalendar! 
    public var visibleCalendars: Set<NSObject>! 
    public var eventStore: EKEventStore! { get } 
    weak public var delegate: MGCDayPlannerEKViewControllerDelegate! 

    /** designated initializer */ 
    public init!(eventStore: EKEventStore!) 
    public func reloadEvents() 
} 

public protocol MGCDayPlannerEKViewControllerDelegate : NSObjectProtocol { 

    @available(iOS 4.0, *) 
    optional public func dayPlannerEKEViewController(vc: MGCDayPlannerEKViewController!, willPresentEventViewController eventViewController: EKEventViewController!) 
    @available(iOS 4.0, *) 
    optional public func dayPlannerEKViewController(vc: MGCDayPlannerEKViewController!, navigationControllerForPresentingEventViewController eventViewController: EKEventViewController!) -> UINavigationController! 
} 

В моем Свифта классе, я унаследовав этот класс, а также создание одного протокола внутри моего нового класса

protocol WeekViewControllerDelegate :MGCDayPlannerEKViewControllerDelegate,CalendarViewControllerDelegate,UIViewControllerTransitioningDelegate { 

} 
class WeekViewController: MGCDayPlannerEKViewController { 

    var delegate: WeekViewControllerDelegate? 
    var showDimmedTimeRanges = false 
    var isiPad : Bool { 
     if UIDevice.currentDevice().userInterfaceIdiom == .Pad { 
      return true 
     }else{ 
      return false 
     } 
    } 
} 

Но я получаю ошибку здесь в декларации делегатов. Ошибка

Property 'delegate' with type 'WeekViewControllerDelegate?' cannot override a property with type 'MGCDayPlannerEKViewControllerDelegate!' (aka 'ImplicitlyUnwrappedOptional<MGCDayPlannerEKViewControllerDelegate>') 

Что я делаю неправильно?

ответ

3

Эта ошибка означает, что в родительском классе есть свойство с тем же именем, что и в его дочернем. В вашем коде WeekViewController и MGCDayPlannerEKViewController есть объект под названием delegate. Вам необходимо переименовать переменную delegate в классе MGCDayPlannerEKViewController или в WeekViewController.

Смежные вопросы