2016-01-22 62 views
0

我的情况类似于下面与.Net相关的问题。如何在Swift中将类型(符合约束条件)类型化为泛型?

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

我相信,我首先问失败仿制药的目的。但是有没有破解可以完成这件事?我需要这个破解来确保我对代码做了最小的修改。

回答

0

这应该工作:

let result = runtimeError.code == 0 ? WebResult.Result(jsonResponse) : WebResult.Error(runtimeError)  
return completionHandler(result:result)