2016-01-22 61 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)