web-dev-qa-db-ja.com

Swift 2で迅速なjsonなしでalamofire2の辞書へのjson応答をシリアル化する方法

このコードは、以前のバージョンのalamofireでSwift 2.以前に機能していました。現在は警告が表示されます:cast from Result<AnyObject> to Dictionary<String, AnyObject> always fails

  Alamofire.Manager.sharedInstance.request(.POST, url, parameters:params)
            .responseJSON { (request, response, data) -> Void in

            var result = data as? Dictionary<String,AnyObject> //this gives an error cast from Result<AnyObject> to Dictionary<String, AnyObject> always fails

辞書へのキャストを機能させるにはどうすればよいですか?

10
MonkeyBonkey

あなたは電話する必要があります:

Alamofire.request(.POST, url, parameters:params)
    .responseJSON { request, response, result in
        debugPrint(result)

        if let value = result.value as? [String: AnyObject] {
           print(value)
        }
    }

更新された [〜#〜] readme [〜#〜] コードサンプルを一読する必要があります。

27
cnoon

私はこれに答えるには少し遅すぎることを知っていますが、おそらくこのコードが誰かを助けることができると思うので、私はこれを共有します:

Alamofire.request(url, method: .post, parameters: param, encoding: JSONEncoding.default, headers: nil).responseJSON
            {
                response in

                SVProgressHUD.dismiss()

                let data = response.result.value

                let responseObject = data as? NSDictionary

                switch (response.result)
            {
                case .success(_):

                print(responseObject!["message"] as! NSString as String)
                break

                case .failure(_):
                   SVProgressHUD.showError(withStatus: (responseObject!["message"] as! NSString as String))
                print(responseObject!["message"] as! NSString as String)
                break
            }
        }

ありがとう、お楽しみください!ハッピーコーディング! :)

1
iHarshil