Swift: Невозможно переопределить метод с типом возвращаемого пользовательского класса, который реализует Objectmappers Mappable - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу переопределить метод, определенный в родительском классе, который приводит к пользовательскому классу.

Родитель:

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() 
    } 
}

Это не имеет смысла для меня, поскольку ребенок, очевидно, переопределяет функцию. Я попытался переключить тип возврата на строку, и тогда это сработало. Так что я думаю, что мой тип результата - проблема:

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 и класс Parent происходят из Cocoapod.

...