2017-02-18 17 views
0

AlamofireをSwift 3の構文にアップグレードするURLRequestConvertible(コードセクションは現在準拠していない)に基づいてルータをアップグレードする最も安全な方法は何でしょうか。私はいくつかのことを試しましたが、私の気持ちはURLエンコーディングが少し変わるかもしれないということです。ルータコードをAlamofire 4.0とSwift 3にアップグレード

Alamofireは、もはや有効ではないParameterCoding.URLのように、 "。GET"がコンパイラエラーを引き起こすということが、私が直接見ることができるエラーを大幅に変更したようです。

私は(おそらく私のコードでは、少なくとも30個の異なる場所で)持っているコードパターンがある:Alamofireとスウィフト3における洞察力と

// MARK: - AlamoFire Router 
enum Router: URLRequestConvertible 
{ 
    static let baseURL = Singleton.sharedInstance.apiURL 
    static let apiKey: String = Singleton.sharedInstance.apiKey 
    static let applicationId: String = Singleton.sharedInstance.applicationId 

    case userPoints() 

    var method: Alamofire.Method 
    { 
     switch self 
     { 
      case .userPoints: 

       return .GET 
     } 
    } 


    var path: String 
    { 
     switch self 
     { 
      case .userPoints: 

       return "https://stackoverflow.com/users/points/user/\(Singleton.sharedInstance.user.id)" 
     } 
    } 

    var URLRequest: NSMutableURLRequest 
    { 
     let URL_val = URL(string: Router.baseURL)! 

     let mutableURLRequest = NSMutableURLRequest(URL: URL_val.URLByAppendingPathComponent(path)) 
     mutableURLRequest.HTTPMethod = method.rawValue 

     // Send API key and Application ID in the header 
     mutableURLRequest.setValue("API-Key apiKey=\(Router.apiKey) applicationId=\(Router.applicationId)", forHTTPHeaderField: "X-Authorization") 

     let encoding = ParameterEncoding.URL 

     #if DEBUG 
      print(mutableURLRequest) 
     #endif 

     switch self 
     { 
      case .userPoints: 

       return encoding.encode(mutableURLRequest, parameters: nil).0 
     } 
    } 
} 

非常に有望誰かが私が準拠するソリューションを把握助けることができます変更。

事前に感謝します。

答えて

1

設定には慣れています。あるもののために.getを変更する必要があります。

let URL_val = Router.baseURL.asURL()

var urlRequest = URLRequest(url: URL_val.appendingPathComponent(path))

移動switch文の外に復帰し、後にそれを移動

変更var urlRequest

func asURLRequest() throws -> URLRequestから
switch self { 
case .userPoints: 
    urlRequest = try URLEncoding.default.encode(urlRequest, with: nil) 
} 

return urlRequest 

彼らはCRUD下&認証

+0

を自分のドキュメントで完全な作業例を持って答えてくれてありがとう!あなたの変更を含めるようにコードを編集できますか? .urlについては、実際に試してみましたが、コンパイラは "Type"メソッド(別名OpaquePointer)にメンバー 'get'を持っていません " – nights

+1

メソッドを' var method:HTTPMethod'に変更する方法ルーティング要求のセクションのalamofireドキュメントに簡単に記載されています。これですべての問題が解決されない場合は、あなたが提供したコードで何か気づかなかったので、問題になるはずです。 – JustinM

+0

ありがとう。このラインはどうですか:mutableURLRequest.setValue( "API-Key apiKey = \(Router.apiKey)applicationId = \(Router.applicationId)"、forHTTPHeaderField: "X-Authorization")は、この新しいAlamofireフロー? – nights

関連する問題