我的情况类似于以下有关.Net的问题。
Value of type 'T' cannot be converted to
TServiceResponse为
我的代码:
public class TServiceResponse : ResponseNode,CommsObject{
public var type : String!
public var Status : String?
required public init?(_ dictionary: NSDictionary){
self.type = dictionary.field("$type")
self.Status = dictionary.field("Status")
}
}
public enum WebResult<T : ResponseNode> {
case Result(JsonResponse<T>)
case Error(NSError)
}
func executePost<Message : RequestMessage, Node : ResponseNode>(request: JsonPostRequest<Message>,
completionHandler: (result: WebResult<Node>) -> Void) -> NSURLSessionTask?{
if let jsonResponse : JsonResponse<TServiceResponse> = self.createResponse(data, error: &runtimeError){
return completionHandler(result: (jsonResponse as? WebResult<Node>)!)
}
}
我相信,我所要求的首先会挫败泛型的目的。但是有没有办法做到这一点?我需要此技巧,以确保对代码进行的更改最少。
最佳答案
这应该工作:
let result = runtimeError.code == 0 ? WebResult.Result(jsonResponse) : WebResult.Error(runtimeError)
return completionHandler(result:result)