2016-04-28 10 views
0

最近、複数のプロジェクトで使用するためにコードをベースのココアポッドにリファクタリングしています。そのようなクラスの1つは、Alamofireにとってかなりステレオタイプのルーティングエニュメントです。それはココアポッドに移動するまでうまくいっています...今クラッシュしています。実装例:ココアポッドに移動するとスウィフトルーティングの列挙型がクラッシュする

for param in headerParams{ 

しかし、それは開発cocoapodであるように、私はその点にデバッガをアタッチすることはできません、またエラーがEXEC_BAD_INSTRUCTION以上のものです:

public enum Router: URLRequestConvertible { 

    static var baseURLString = "http://myserver.com/api" 

    case Endpoint1(String, String) 
    case Endpoint2(String, String, Date, Date) 
    case Endpoint3(String, String) 

    public var URLRequest: NSMutableURLRequest { 
     var path : String! { 
      switch self { 
      case .Endpoint1(let id, _): 
       return "/endpoint1/" + id 
      case .Endpoint2(let id, _, _, _): 
       return "/booking/\(id)/thing" 
      case .Endpoint3(_, _): 
       return "/authenticate" 
      } 
     } 

     var parameters: [String: AnyObject] { 
      switch self { 
      case .Endpoint2(_, _, let startDate, let endDate): 
       let params = ["startDate": startDate, "endDate" : endDate] 
       return params 
      default: 
       let params = [String: AnyObject]() 
       return params 
      } 
     } 

     var method : Alamofire.Method { 
      switch self { 
      case .Endpoint2: 
       return .POST 
      default: 
       return .GET 
      } 
     } 

     var body : [String : AnyObject]?{ 
      switch self{ 
      case .Endpoint3(let email, let password): 
       return ["email" : "\(email)", "password" : "\(password)"] 
      default: 
       return nil 
      } 
     } 

     var header : [String: String]?{ 
      switch self { 
      case .Endpoint1(_, let token): 
       return ["x-access-token" : token] 
      default: 
       return nil 
      } 
     } 

     let URL = NSURL(string: Router.baseURLString)?.URLByAppendingPathComponent(path) 
     let request = NSURLRequest(URL: URL!) 

     let encoding = Alamofire.ParameterEncoding.URL 

     let mutable = (encoding.encode(request, parameters: parameters).0) 
     mutable.HTTPMethod = method.rawValue 

     if let bodyParams = body{ 
      mutable.setValue("application/json", forHTTPHeaderField: "Content-Type") 
      mutable.addJsonArrayToRequestBody(bodyParams) 
     } 

     if let headerParams = header{ 
      for param in headerParams{ 
       mutable.setValue(param.1, forHTTPHeaderField: param.0) 
      } 
     } 

     return mutable 
    } 
} 

失敗ラインがありますこれは参考になるものではありません。エラーの原因をさらにデバッグするにはどうすればよいですか?

+0

アンパックする前にブレークポイントを置くと、ヘッダー変数に期待値が含まれていますか? – Terry

答えて

0

開発cocoapodを使用している場合。これは、Xcodeのデバッガのバグです、実際のエラーだった:

のlet URL = NSURL(文字列:Router.baseURLString)+。URLByAppendingPathComponent(パス)

静的このメソッドが呼び出されたときにbaseURLStringがまだ設定されていないため、URLはnilになります。私は、今すぐ共有コードで、修正する方法がわからないときに、間違った行を指し示すデバッガの複数の発生を見てきました。