Swift: невозможно переопределить метод с типом возвращаемого значения пользовательского класса, который реализует Objectmappers Mappable

#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. Хм, спасибо, это хотя бы подсказка