#ios #swift #objectmapper
#iOS #swift #objectmapper
Вопрос:
Я хочу переопределить метод, определенный в родительском классе, который приводит к пользовательскому классу.
Родительский:
open class PagedTableViewController<T>: UIViewController {
open func getSelectedFilters () -> SelectedFiltersResource {
return SelectedFiltersResource()
}
}
Когда я пытаюсь переопределить его в дочернем классе, я получаю сообщение об ошибке «Метод не переопределяет какой-либо метод из своего суперкласса»
Дочерний элемент выглядит следующим образом:
class ReshipmentsTabViewController:
PagedTableViewController<Reshipment> {
//This does NOT work
override func getSelectedFilters() -> SelectedFiltersResource {
return SelectedFiltersResource()
}
//This DOES work (if i also change the type in the parent obv.)
override func getSelectedFilters() -> String {
return String()
}
}
Для меня это не имеет смысла, поскольку дочерний элемент, очевидно, переопределяет функцию.
Я попытался переключить возвращаемый тип на String, и тогда это сработало. Так что, я думаю, проблема в моем типе результата:
import Foundation
import ObjectMapper
open class SelectedFiltersResource: NSObject, Mappable {
public var selectedCustomers = [Int64]()
public override init() {
}
public required init?(map: Map) {
}
// Mappable
public func mapping(map: Map) {
selectedCustomers <- map["selectedCustomers"]
}
}
Так в чем же здесь проблема? Я не вижу ни одного… Я использую Swift 5.0 и Xcode 10.2
Мой класс SelectedFilters и родительский класс происходят из Cocoapod.
Комментарии:
1. Было бы полезно, если бы вы могли поделиться сведениями о классе переоборудования.
2. я не думаю, что с этим что-то связано. Если я заменю переоборудование на String или что-то еще, оно все равно не будет работать.
3. Я не знаю почему, но когда я удалил
Mappable
и связал код изSelectedFiltersResource
переопределения, работает.4. Хм, спасибо, это хотя бы подсказка