【发布时间】:2018-05-30 09:04:29
【问题描述】:
当我第一次单击按钮时,我得到“失败 998”。然后当我第二次单击时,我得到“成功 999”。这应该是异步问题,这就是为什么我添加了“DispatchQueue”代码行但它不起作用。当我第一次按下按钮时,我应该得到“成功 999”。我该如何解决这个问题? (顺便swift版本是4.1)
这里是源代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var lblDetail: UILabel!
var globalTempValue = ""
override func viewDidLoad() {
super.viewDidLoad()
}
struct MyGitHub: Codable {
let resultCode: String?
private enum CodingKeys: String, CodingKey {
case resultCode
}
}
@IBAction func btnClickAction(_ sender: Any) {
callMyApi()
if (globalTempValue == "999")
{
print ("success 999")
}
else
{
print ("fail 998")
}
}
func callMyApi()
{
guard let gitUrl = URL(string: "https://transsupp.com/tApp/ws01.ashx") else
{ return }
URLSession.shared.dataTask(with: gitUrl)
{
(data, response , error) in
guard let data = data else { return }
do
{
let decoder = JSONDecoder()
let gitData = try decoder.decode(MyGitHub.self, from: data)
DispatchQueue.main.async
{
self.globalTempValue = gitData.resultCode!
}
}
catch
let err
{
print("Err", err)
}
}.resume()
}
}
web api 返回这个结构:
{
"resultCode": "999",
"resultMessage": "ok",
"showPopUpPage": "True",
"contentTextOfPopUpPage": "ws01Settings4Colors.ashx<br/>table:renkAyarlari<br/>showPopUpPage:True<br/><a href=https://www.google.com>click for the link brother</a>and this a skip line in here<br/>",
"backgroundColor": "4D5656",
"textColorOnThePage": "FFFFFF",
"alertTextColorOnThePage": "E91E63",
"buttonTextColor": "FFFFFF",
"buttonBackgroundColor": "81D4FA",
"alertButtonTextColor": "FFFFFF",
"alertButtonBackgroundColor": "E91E63",
"inputTextColor": "4D5656",
"inputBackgroundColor": "FFFFFF",
"dropDownMenuTextColor": "4D5656",
"dropDownMenuBackgroundColor": "FFFFFF",
"showBackgroundImage": "False",
"backgroundImagePath": "http://transsupp.com/app/Assets/BackgroundImages/other_background.png"
}
【问题讨论】: