簡體   English   中英

如何從php到swift應用程序獲取文本變量

[英]How can I get variable to text from php to swift app

我使用這個代碼,工作完美。 我用swift。 PHP工作正常。 我還嘗試了其他一些例子,我有2個問題,首先我的responseString值在Optional(“Success”)中變成。 為什么? 第二個是如何在我的按鈕上分配它?

func makePostCall() {
        var request = URLRequest(url: URL(string: "MyURL/page.php")!)
        request.httpMethod = "POST"
        let postString = "id=login"
        request.httpBody = postString.data(using: .utf8)
        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            guard let data = data, error == nil else {                                                 // check for fundamental networking error
                print("error=\(error)")
                return
            }

            if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
                print("statusCode should be 200, but is \(httpStatus.statusCode)")
                print("response = \(response)")

            }

            let responseString = String(data: data, encoding: .utf8)
            print("responseString = \(responseString)")
            self.lbl.text = responseString
        }
        task.resume()
        //return responseString

    }

您需要使用DispatchQueue.main.async來處理來自URLRequests UI。 您還需要使用[weak self]來防止reference cycle問題。 最后, btn.setTitle(responseString, for: .normal)為按鈕狀態設置標題.normal 這是正確的答案!

func makePostCall() {
        var request = URLRequest(url: URL(string: "MyURL/page.php")!)
        request.httpMethod = "POST"
        let postString = "id=login"
        request.httpBody = postString.data(using: .utf8)
        let task = URLSession.shared.dataTask(with: request) {[weak self] data, response, error in
            guard let data = data, error == nil else {                                                 // check for fundamental networking error
                print("error=\(error)")
                return
            }

            if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
                print("statusCode should be 200, but is \(httpStatus.statusCode)")
                print("response = \(response)")

            }

            guard let responseString = String(data: data, encoding: .utf8) else {
                  return
            }
            print("responseString = \(responseString)")
            DispatchQueue.main.async {
                self?.lbl.text = responseString
                self?.btn.setTitle(responseString, for: .normal) // your button
            }
        }
        task.resume()
        //return responseString

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM