【发布时间】:2019-03-12 07:24:40
【问题描述】:
我目前正在学习如何实现一个通用函数。我正在尝试创建一个返回泛型类型回调的函数
这是我的代码
static func performPOST<T: DomainEntity>(action: Module, completion: @escaping (CallbackResponse, DomainObjectWrapper<T>?) -> Void) {
//logic implementation at first
switch action {
case .getMenuItem:
self.alamofireManager.request(urlRequest, encoding: URLEncoding.default, headers: headers).responseObject { (response: DataResponse<DomainObjectWrapper<MenuItemDO>>) in
var validateRequestResponse = RestHelper.validateRequestResponse(response: response)
let responseObject = validateRequestResponse.responseObject
if validateRequestResponse.isSuccess {}
else {
if let errorMessage = responseObject?.error {
validateRequestResponse.message = errorMessage
}
else if let warningMessage = responseObject?.warning {
validateRequestResponse.message = warningMessage
}
}
callbackResponse = RestHelper.bindValidateRequestResponse(validateRequestResponse: validateRequestResponse)
completion(callbackResponse, responseObject)
}
case .makeSales: break
case .attendance: break
}
}
我从 Xcode 收到此错误。它不会让我编译。
completion(callbackResponse, responseObject) <<-- This Line
Cannot convert value of type 'DomainObjectWrapper<MenuItemDO>?' to expected argument type 'DomainObjectWrapper<_>?'
这是我的其他课程
public class DomainObjectWrapper<T: Mappable>: Mappable {
public var data = [T]()
}
public class DomainEntity: Mappable {
public var id = UUID().uuidString
public var isDeleted = false
}
public class MenuItemDO: DomainEntity {
public var categoryId: String?
public var categoryName: String?
}
有人可以指导我了解我所缺少的吗?
谢谢
【问题讨论】:
-
你怎么称呼那个方法?您在哪一行收到错误?你能用这些细节更新问题吗?
-
为什么你认为你的方法应该是通用的?
-
嗨@Cristik,Xcode 不会编译代码。编译器的错误如上所述。谢谢
-
@Sweeper,因为会有很多 API 调用会返回 DomainObjectWrapper
。所以我想创建一个通用函数将帮助我避免冗余代码。谢谢