###前提・実現したいこと
swiftでiOSアプリを作成しています。
現在、サーバーサイドとの疎通テストで、alamofireとswiftyJSONを使いJSONでデータ通信を行なっています。
サーバー側の設定で、クライアントからサーバーにJSONをPOSTし、成功すると特定のデータ(name,uid,id,token)がJSONで返送されてくる仕様になっています。
今、サーバーから返送されてきたJSONに入っているidとtokenを取り出してappDelegateに作成した変数に格納する処理を書いています。
###発生している問題・エラーメッセージ
サーバーから返送されてきたJSONを、SwiftyJSONを使用しパースするところまではできました。
返送されてきたJSONは以下になります。
{"user":{"name":"Tanaka Taro","uid":1283726151111,"id":66,"authenticate_token":"xxxxxxx"}}
パースしたJSONファイルからidとtokenを取り出し、appDeledateの変数(id, authToken)に格納するところで、nilとなりうまく格納することができません。
###該当のソースコード
こちらは、JSONをPOSTするViewControllerです。
let myAppDelegate = UIApplication.shared.delegate as! AppDelegate var url: String? url = "https:xxxxxx" let params = ["uid":1283726151111, "name":self.defaultNickName] as [String : Any] Alamofire.request(url!, method: .post, parameters: params, encoding: JSONEncoding.default).responseString(completionHandler:{ response in print(response.value as Any) guard let object = response.result.value else { return } let json = JSON(object) print(json) print(json["user"]) print(type(of: json)) if let id = json["user"]["id"].int { print(id) //=> 66 print(type(of: id)) myAppDelegate.id = id print(myAppDelegate.id) } else{ print("id does not exist.") }
こちらは、AppDelegateの上の方です。
var id:Int! var authToken: String = ""
###試したこと
ウェブで調べて色々試しましたが、どれを試してもnilになってしまいエラーがでます。
お手数おかけしますが、どうぞ教えてください!
###補足情報(言語/FW/ツール等のバージョンなど)
swift4.0
回答1件
あなたの回答
tips
プレビュー