2017-05-01 11 views
0

http取得要求のプロトコルを作成し、それをビューコントローラで使用しようとしています。この考え方は、各VCで書き込み要求を防止し、アプリで一度書き込むことです。私はget関数を使ってプロトコルを書いて、Alamofireを使ってget要求を実装するための拡張を書きました。すべてのアプリケーションで一度だけリクエストを取得する -

protocol Irequest 
{ 
    func getRequest(url: String, completion: (JSON) ->()) 
    func postRequest(url: String, param: Parameters, completion: (JSON) ->()) 
} 

extension Irequest 
{ 
    func getRequest(url: String, completion:@escaping (JSON) ->()) 
    { 

Alamofire.request(url.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)!, method: .post) 
    .responseJSON { response in 
      debugPrint(response) 
      if let Json = response.result.value 
      { 
       let j = JSON(Json) 
       completion(j) 
      } 
      else 
      { 
       completion(JSON("{}")) 
      } 
    } 
} 

} 

私がクラスで使用したい場合、クラスXはプロトコルのIrequestに準拠していないと言います。どうすれば使えますか?より一般的な言葉では、どのように私は1つのすべてのアプリケーションで要求機能を得ることができますか?

class X : UIViewController , Irequest 
+0

実際には、この機能をグローバルスコープに入れることはできますか? – Sweeper

+1

エラー*は、 'postRequest'が実装されていないために発生します。私は 'UIViewController'の拡張がプロトコルより適していると思います。 – vadian

+0

@vadianあなたは正しいです。私はプロトコルのpostRequestにコメントしましたが、まだプロトコルに準拠していないと言います –

答えて

1

1. プロトコルのgetメソッドのシグネチャは!=拡張のget署名です。 1つはエスケープしていません。 >メソッドが一致しない

==、エルゴGETは

2. ポストはすべて

で実装されていませんがない==>エルゴ方法は


が欠落しています

あなたがすでに知っているコメントから2つの問題を修正しましたので、あなたは良いはずです:)

関連する問題