2016-12-21 12 views
0

私はiOSで新しく、Alamofireでシングルトンを使用する方法とシングルトンが重要であることを少し混乱させています。私はAlamofire投稿を書いてメソッドを取得しているという点でnetworkWrapperクラスを作成しましたが、シングルトンは使用しませんでした。Swam 3を使ってAlamofireでシングルトンを使う方法?

シングルトンでAlamofireのWrapperクラスを作成するにはどうすればよいですか?本当に重要なトリックをどうやって得ることができますか?以下は

ラッパークラスのために私のコードです:私のコントローラで

import Foundation 
import UIKit 
import Alamofire 
import SwiftyJSON 

class AFWrapper: NSObject { 

//TODO :- 
/* Handle Time out request alamofire */ 


class func requestGETURL(_ strURL: String, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void) 
    { 
     Alamofire.request(strURL).responseJSON { (responseObject) -> Void in 
      //print(responseObject) 
      if responseObject.result.isSuccess { 
       let resJson = JSON(responseObject.result.value!) 
       //let title = resJson["title"].string 
       //print(title!) 
       success(resJson) 
      } 

     if responseObject.result.isFailure { 
      let error : Error = responseObject.result.error! 
      failure(error) 
     } 
    } 
    } 

static func requestPOSTURL(_ strURL : String, params : [String : AnyObject]?, headers : [String : String]?, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void){ 
    Alamofire.request(strURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (responseObject) -> Void in 
     //print(responseObject) 
     if responseObject.result.isSuccess { 
      let resJson = JSON(responseObject.result.value!) 
      success(resJson) 
     } 
     if responseObject.result.isFailure { 
      let error : Error = responseObject.result.error! 
      failure(error) 
     } 
    } 
    } 
} 

:私はその方法をした他のNSObjectので

import UIKit 
import Alamofire 

struct FV_API 
{ 
    //URL is http://www.stack.com/index.php/signup 
    static let appBaseURL = "" // assign your base url suppose: http://www.stack.com/index.php 
    static let apiSignUP = "" // assign signup i.e: signup 
} 

class APIManager: NSObject 
{ 
    //MARK:- POST APIs 
    class func postAPI(_ apiURl:String, parameters:NSDictionary, completionHandler: @escaping (_ Result:AnyObject?, _ Error:NSError?) -> Void) 
    { 
     var strURL:String = FV_API.appBaseURL // it gives http://www.stack.com/index.php and apiURl is apiSignUP 

     if((apiURl as NSString).length > 0) 
     { 
      strURL = strURL + "/" + apiURl // this gives again http://www.stack.com/index.php/signup 
     } 

     _ = ["Content-Type": "application/x-www-form-urlencoded"] 

     print("URL -\(strURL),parameters - \(parameters)") 

     let api = Alamofire.request(strURL,method: .post, parameters: parameters as? [String : AnyObject], encoding: URLEncoding.default) 

     // ParameterEncoding.URL 
     api.responseJSON 
      { 
       response -> Void in 

       print(response) 

       if let JSON = response.result.value 
       { 
        print("JSON: \(JSON)") 
        completionHandler(JSON as AnyObject?, nil) 
       } 
       else if let ERROR = response.result.error 
       { 
        print("Error: \(ERROR)") 
        completionHandler(nil, ERROR as NSError?) 
       } 
       else 
       { 
        completionHandler(nil, NSError(domain: "error", code: 117, userInfo: nil)) 
       } 
     } 
    } 

  if newLength == 6 
      { 
       let textZipCode = textField.text! + string 

       let dict = ["id" : "43","token": "2y103pfjNHbDewLl9OaAivWhvMUp4cWRXIpa399","zipcode" : textZipCode] as [String : Any] 

       //Call Service 
       AFWrapper.requestPOSTURL(HttpsUrl.Address, params: dict as [String : AnyObject]?, headers: nil, success: { (json) in 
        // success code 
        print(json) 
       }, failure: { (error) in 
        //error code 
        print(error) 
       }) 


       setFields(city: "Ajmer", state: "Rajasthan", country: "India") 
       return newLength <= 6 
      } 

答えて

1

あなたはそれを必要とするかもしれませ登録のために:

func apiForSignup() 
    { 
     SignUp.registerWithAPI(firstName: txtFieldFirstName.text!, lastName: txtFieldLastName.text!) 
     { 
      (Result, Error) -> Void in 
      // write code 
} 
+0

でシングルトンクラスのインスタンス関数を呼び出すことができます。 ありがとうございます – kishor0011

+0

私はどこに電話をかけていますか? ありがとう – kishor0011

+0

あなたの問題を詳しく教えてもらえますか?あなたがAPIManager.apiPost()を書いたコントローラでは、あなたのNSObjectクラス名はAFWrapperです。私の答えを使用しているなら、すべての手順に従ってください。 – Amanpreet

5

私はあなたのコードの中に深く見ていない: は、コントローラクラスでは私のようなAPIを呼び出す方法を作りました。迅速で、私たちは

static let sharedInstance = AFWrapper() 

でシングルトンを作成することができ、それがクラスのシングルトンインスタンスを作成しますので、そのクラスとシングルトンクラスのインスタンス機能の静的は必要ありません。シングルトンクラスのコードは下記を参照してください。

import Foundation 
import UIKit 
import Alamofire 
import SwiftyJSON 

class AFWrapper: NSObject { 

    static let sharedInstance = AFWrapper() 

    //TODO :- 
    /* Handle Time out request alamofire */ 


    func requestGETURL(_ strURL: String, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void) 
    { 
     Alamofire.request(strURL).responseJSON { (responseObject) -> Void in 
      //print(responseObject) 
      if responseObject.result.isSuccess { 
       let resJson = JSON(responseObject.result.value!) 
       //let title = resJson["title"].string 
       //print(title!) 
       success(resJson) 
      } 

      if responseObject.result.isFailure { 
       let error : Error = responseObject.result.error! 
       failure(error) 
      } 
     } 
    } 

    func requestPOSTURL(_ strURL : String, params : [String : AnyObject]?, headers : [String : String]?, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void){ 
     Alamofire.request(strURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (responseObject) -> Void in 
      //print(responseObject) 
      if responseObject.result.isSuccess { 
       let resJson = JSON(responseObject.result.value!) 
       success(resJson) 
      } 
      if responseObject.result.isFailure { 
       let error : Error = responseObject.result.error! 
       failure(error) 
      } 
     } 
    } 
} 

今、あなたは[OK]を私はこれをチェックしてみましょう

AFWrapper.sharedInstance.requestPOSTURL(HttpsUrl.Address, params: dict as [String : AnyObject]?, headers: nil, success: { (json) in 
    // success code 
    print(json) 
}, failure: { (error) in 
    //error code 
    print(error) 
}) 
+0

それは正しいですか? 実際に初めてシングルトンを使用しています。 なぜそれが良いのか知りたかったですか? ありがとうございます – kishor0011

+0

ようこそ。これが役に立つとわかったら、この回答を受け入れてください。他の人が参照できるように –

+0

確かに でもそれは正しいですか? – kishor0011

関連する問題