Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Alamofire请求-使用UIWebView回答VC_Swift_String_Request_Alamofire - Fatal编程技术网

Swift Alamofire请求-使用UIWebView回答VC

Swift Alamofire请求-使用UIWebView回答VC,swift,string,request,alamofire,Swift,String,Request,Alamofire,我从Alamofire请求中得到答案,我想用UIWebView将答案传递到另一个UIViewController { "result":{ "code":"0", "description":"" }, "operation":[{ "status":boolean, "paymentType":integer, "orderID":integer", "paymentData":"string", "token":"string"

我从
Alamofire
请求中得到答案,我想用
UIWebView
将答案传递到另一个
UIViewController

{
 "result":{

    "code":"0",
    "description":""
},
 "operation":[{

    "status":boolean,
    "paymentType":integer,
    "orderID":integer",
    "paymentData":"string",
    "token":"string",
    "user":[{
    "user_status":"string",
    "userID":integer,
}]
}]
}
paymentData
中,获取如下字符串:

<form action="https:..." method="post">
    <input name=".." value=".." type="hidden"/>
    <input name=".." value=".." type="hidden"/>
    <input name=".." value=".." type="hidden">
    <input name=".." value="nil" type="hidden"/>
    <input name=".." value=".." type="hidden"/>
    <input name=".." value=".." type="hidden"/>
    <input name=".." value=".." type="hidden">
    <input type=".." value="PPP" style="background: #3aaf42; border: none; color: #fff; text-align: center; width: 100px; padding: 5px; margin: -15px 0 0 -50px; display: block; top: 50%; border-radius: 3px; position: absolute; left: 50%;\"/>
</form>
在第一个视图中,Alamofire中的im catch paymentData如下所示:

       Alamofire.request("http://...", method: .get, parameters: params).responseJSON { response in
        if let r = response.result.value as? NSDictionary {
            let jsss = JSON(r)

            if let result = r.value(forKey: "result") as? NSDictionary {
                if let nass = result.value(forKey: "description") as? String {
  //                        print(response.result.value)

                    if let code = result.value(forKey: "code") as? String {
         //               print(code)

                        if code == "0" {
                            if let orderIDD = jsss["operation"].array![0]["orderID"].int {
    //                                    print("order--------------------- \(orderIDD)")
                                self.webb?.orderID = orderIDD
                            }
                            if let paymentData = jsss["operation"].array![0]["paymentData"].string {
   //                                    print(paymentData)
                                self.webb?.paymentDat = paymentData

                            }
                            if paymentType == 1 {
                                self.performSegue(withIdentifier: "WebView", sender: self)
                                self.alert(title: "ОК!", message: nass)

                            } else {
                                self.alert(title: "ОК!", message: nass)

                            }
                        } else {
                            self.alert(title: "Error!", message: nass)
                        }
                    }
                }
            }
        } else {
            self.alert(title: "Error connect!", message: "Error connect")
        }
    }

如何在另一个VC中显示paymentData?

您需要在
prepare(对于segue:UIStoryboardSegue,sender:Any?
方法中设置值

在第一个ViewController中添加此方法:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "WebView", let webView = segue.destination as? WebViewController {
        webView.paymentDat = sender as! String
    }
}
在响应代码中添加以下更改:

   Alamofire.request("http://...", method: .get, parameters: params).responseJSON { response in
    if let r = response.result.value as? NSDictionary {
        let jsss = JSON(r)

        if let result = r.value(forKey: "result") as? NSDictionary {
            if let nass = result.value(forKey: "description") as? String {
  //                        print(response.result.value)

                if let code = result.value(forKey: "code") as? String {
     //               print(code)

                    if code == "0" {
                        var paymentHTML = ""
                        if let orderIDD = jsss["operation"].array![0]["orderID"].int {
//                                    print("order--------------------- \(orderIDD)")
                            self.webb?.orderID = orderIDD
                        }
                        if let paymentData = jsss["operation"].array![0]["paymentData"].string {
   //                                    print(paymentData)
                            paymentHTML = paymentData

                        }
                        if paymentType == 1 {
                            self.performSegue(withIdentifier: "WebView", sender: paymentHTML) // Pass 
                            self.alert(title: "ОК!", message: nass)

                        } else {
                            self.alert(title: "ОК!", message: nass)

                        }
                    } else {
                        self.alert(title: "Error!", message: nass)
                    }
                }
            }
        }
    } else {
        self.alert(title: "Error connect!", message: "Error connect")
    }
}

更好的方法是将此JSON传递到您从中获取HTML的URL,URL应返回预先填充的表单。@Mukesh,Requtst给我这个预先填充的表单,我想将此表单从一个请求转移到另一个带有WebViewController的ViewController您的问题不清楚。您拥有数据,将其设置为
paymentDat
变量,然后使用该html字符串加载
webView
。问题出在哪里?@Mukesh是的,我将其设置为
paymentDat
并加载
webView
,但它没有显示在
webView
中。您是否调试了它,并检查是否在webView ViewController的
paymentDat
变量中获得了值?
   Alamofire.request("http://...", method: .get, parameters: params).responseJSON { response in
    if let r = response.result.value as? NSDictionary {
        let jsss = JSON(r)

        if let result = r.value(forKey: "result") as? NSDictionary {
            if let nass = result.value(forKey: "description") as? String {
  //                        print(response.result.value)

                if let code = result.value(forKey: "code") as? String {
     //               print(code)

                    if code == "0" {
                        var paymentHTML = ""
                        if let orderIDD = jsss["operation"].array![0]["orderID"].int {
//                                    print("order--------------------- \(orderIDD)")
                            self.webb?.orderID = orderIDD
                        }
                        if let paymentData = jsss["operation"].array![0]["paymentData"].string {
   //                                    print(paymentData)
                            paymentHTML = paymentData

                        }
                        if paymentType == 1 {
                            self.performSegue(withIdentifier: "WebView", sender: paymentHTML) // Pass 
                            self.alert(title: "ОК!", message: nass)

                        } else {
                            self.alert(title: "ОК!", message: nass)

                        }
                    } else {
                        self.alert(title: "Error!", message: nass)
                    }
                }
            }
        }
    } else {
        self.alert(title: "Error connect!", message: "Error connect")
    }
}