Либо я вижу странное поведение от Свифта, либо я делаю что-то неправильно.Переопределение функции класса Obj-c в Swift
Допустим, у вас есть Obj-C класс, называемый TurtleHelper, который выглядит следующим образом:
@interface TurtleHelper : NSObject
+(NSDictionary*)getTurtles;
@end
Тогда я хочу, чтобы переопределить этот метод в Swift, поэтому я делаю это:
class SwiftTurtles: TurtleHelper {
override class func getTurtles() -> NSDictionary {
...
}
}
компилятор меняет следующую ошибку:
Метод переопределения с селектором getTurtles имеет несовместимый тип '() -> NSDictio nary '
Что я делаю неправильно?
Тип вероятно NSDictionary? а не NSDictionary, потому что исходный метод Objective-C может возвращать нуль, но метод Swift, возвращающий NSDictionary, не может. – gnasher729
Нет, такое же сообщение об ошибке. – henryeverett
Вы попробовали что-то вроде этого .... override func getTurtles() -> (NSDictionary!) {....}. И если вы знаете тип/тип NSDictionary, тогда попробуйте переопределить func getTurtles() -> ([NSArray: AnyObject]!) {.....}. В этом случае я использовал ключ/значение словаря как NSArray/AnyObject. – Suresh