I think I should be more clear, here are my classes:
import Foundation
import Alamofire
public class BaseService<T> : ServiceRequest {
public var requestType: Alamofire.Method = .GET
public var path: String = "/"
var requireLogin:Bool = false
var consumer:RequestInformer?
public func requestSuccess<T>(request: Request, response: T) {
consumer?.requestSuccess(request, response: response)
}
public func requestFailed(request: Request, error: NSError) {
consumer?.requestFailed(request, error: error)
}
}
extension BaseService where T:Sortable {
func start() {
if requireLogin {
}
//problem is here, T is [CampaignModel] but I need CampaignModel class, not array. NetworkManager.sharedInstance.sendRequest(self,ResponseListModel<T>.self)
}
}
extension BaseService where T:NSObject {
func start() {
if requireLogin {
}
NetworkManager.sharedInstance.sendRequest(self,ResponseModel<T>.self)
}
}
Then I want to use BaseService like below:
import Alamofire
public class ListCampaignService : BaseService<[CampaignModel]> {
override init() {
super.init()
path = "/xxx/yyy.json"
requestType = .GET
}
}
That means ListCampaignService returns CampaignModel array. Bu I have to handle object return type rather than array, something like below
import Alamofire
public class SomeOtherService : BaseService<SomeClass> {
override init() {
super.init()
path = "/aaa/bbb.json"
requestType = .GET
}
}