Hello all! I hope it's not frowned upon to repost a question here from Stack Overflow, but I have not found help there. In any case, the email gets some nice formatting out of it :-D.
I am trying to create a subclass with a generic type that can be passed into a completion block, but am getting the following error: Cannot convert value of type '(ModelListResponse) -> ()' to expected argument type '(APIResponse) -> ()' Parent class: import ObjectMapper class APIResponse: Mappable { var status: String! var message: String? required init?(map: Map) {} func mapping(map: Map) { status <- map["status"] message <- map["message"] }} Subclass: import ObjectMapper class ModelListResponse<T: Mappable>: APIResponse { var data: ModelList<T>? required init?(map: Map) { super.init(map: map) } override func mapping(map: Map) { super.mapping(map: map) data <- map["data"] }} Then I have a function definition: func _GET(path: String, parameters: Parameters, completion:@escaping (APIResponse) -> ()) And I'm trying to call it like so: // error is on this lineself._GET(path: "/rest/posts", parameters: parameters) { (response: ModelListResponse<Post>) in // ...} But here I get the error about how ModelListResponse cannot be converted. Isn't a ModelListResponse an APIResponse? I don't understand why this does not work. I managed to get around the issue by using a generic. Though I'm not sure why this works and the above code does not. Here is my working declaration: func _GET<T: Mappable>(path: String, parameters: Parameters, completion:@escaping (T) -> ()) { } Thanks!
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users