2017-02-06 36 views
2

Alamofireを使用してサーバーに要求し、完了ハンドラを使用してデータを取得しましたが、その外でいくつかの値を使用したいのですか?完了ハンドラの外の値を使用しているAlamofire

今すぐ

import UIKit 

class UserSettings: NSObject { 

    class func setAuthToken(authToken: String?) { 

     let defaults = NSUserDefaults.standardUserDefaults() 
     defaults.setObject(authToken, forKey: "authToken"); 
    } 

    class func getAuthToken() -> String? { 
     let defaults = NSUserDefaults.standardUserDefaults() 
     return defaults.stringForKey("authToken") 
    } 
} 

のようにそのための別のクラスを作成することができます:

let retur = Json().login(userName: param1, password: param2) { (json) in 

    print(json) 

    let jsonDic = JSON(json) 
    for item in jsonDic["result"].arrayValue { 
      let token = item["ubus_rpc_session"].stringValue 
     } 

    print(jsonDic["result"][1]["ubus_rpc_session"].stringValue) 

} 
+0

あなたはクラスプロパティもデリゲートを書くことができ、完了ブロックにその値を保存し、他の場所を使用するように(クラスのプロパティとしてVarのトークンを宣言します)があります。 –

+0

私はあなたのコードから、トークンを保存してアプリのどこにでもアクセスしたいと思いますか? –

+0

はい、あなたは正しいです –

答えて

3

Alamofire以外の結果にアクセスする場合は、以下のコードに従ってください。

 override func viewDidLoad() 
     { 
      super.viewDidLoad() 

      let retur = Json().login(userName: param1, password: param2) { (json) in 

      print(json) 

      let jsonDic = JSON(json) 
      for item in jsonDic["result"].arrayValue 
      { 
        let token = item["ubus_rpc_session"].stringValue 
        self.myFunction(str: token) 
      } 

      print(jsonDic["result"][1]["ubus_rpc_session"].stringValue) 

     } 
     } 

     func myFunction(str: String) 
     { 
      //Here it will print token value. 
      print("Token value ====%@",str) 
     } 

解決方法2:

ここで私はあなたがそれについて検索することができ、それについての詳細を知るために、NSUserDefaultを使用します、複数の例があるGoogleでご利用いただけます。

ここでは、NSUserDefaultを使用します。

//Use below code in alamofire block to save token value. 

    let defaults = UserDefaults.standard 
    defaults.set(token, forKey: "tokenValue") 

    //Use below code to print anywhere. 

     let defaults = UserDefaults.standard 
     if let myToken = defaults.value(forKey: "tokenValue") as? String 
     { 
      print("defaults savedToken: \(myToken)") 
     } 

ご希望の場合は、ご利用ください。詳細については

あなたがこの回答を参照することができhttps://stackoverflow.com/a/41899777/5886755

+1

ありがとう、私はUserdefaultsと道を試みた、それは働いている、後でそれを使うつもりです。 –

+0

ハッピーコーディング:-) –

1

私はあなたがアプリでどこでもあなたのトークンにアクセスしたいコメントに言及として、あなたは、このようにそれを行うことができます

let token = item["ubus_rpc_session"].stringValue 
UserSettings.setAuthToken(token) 

トークンをこの方法でアプリのどこにでも取得できます。

if let token = UserSettings.getAuthToken() { 
    //do your stuff here with token 
} 
+0

私はこの方法を試して、それは働いています、ありがとう –

+0

お手伝いをしています.. :) –

関連する問題